webdriver定位元素的方法和基础函数的使用(转)

一.定位元素

(1)id定位

          driver.find_element_by_id("id")

(2)name定位

          driver.find_element_by_name("name")

(3)class定位

          driver.find_element_by_class_name("class_name")

(4)tag定位(<div>,<input>,<a>)

          driver.find_element_by_tag_name("input")

(5)link定位(a里面定义的link_text)

          driver.find_element_by_link_text("百度地图")

(6)partial link定位(a标签内部名称的一部分)

          driver.find_element_by_partial_link_text("地图")

(7)XPath定位

         1)绝对路径

                 driver.find_element_by_xpath("/html/body/div/div[2]/div/div/from/span/input")

         2)元素属性定位

                driver.find_element_by_xpath("//input[@id=’kw’]")

                driver.find_element_by_xpath("//*[@class=’s_bg’]")#不指定标签

         3)层级和属性结

                driver.find_element_by_xpath("//span[@id=’form’]/span/input")

         4)使用逻辑运算符定位

                driver.find_element_by_xpath("//input[@id=’aa’and @name=’bb’]/span/input")

(8)css定位

         1)class属性定位

                driver.find_element_by_css_selector(".s_bg")

         2)id属性定位

                driver.find_element_by_css_selector("#su")

         3)标签名定位

              driver.find_element_by_css_selector("input")

              driver.find_element_by_css_selector("span>input")                                #父子关系

              driver.find_element_by_css_selector("[autocomplete=off]")                   #属性

              driver.find_element_by_css_selector("form.fm>span>input.s_bg")      #组合

 

*   通用元素选择器,匹配任何元素

E   标签选择器,匹配所有使用E标签的元素

.info   class选择器,匹配所有class属性中包含info的元素

#footer   id选择器,匹配所有id属性等于footer的元素

E,F   多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔

E F   后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔

E > F   子元素选择器,匹配所有E元素的子元素F

E + F   毗邻元素选择器,匹配紧随E元素之后的同级元素F (只匹配第一个)

E ~ F   同级元素选择器,匹配所有在E元素之后的同级F元素

E[att='val']   属性att的值为val的E元素 (区分大小写)

E[att^='val']   属性att的值以val开头的E元素 (区分大小写)

E[att$='val']   属性att的值以val结尾的E元素 (区分大小写)

E[att*='val']   属性att的值包含val的E元素 (区分大小写)

E[att1='v1'][att2*='v2']   属性att1的值为v1,att2的值包含v2 (区分大小写)

E:contains('xxxx')   内容中包含xxxx的E元素

E:not(s)   匹配不符合当前选择器的任何元素

 

二.对元素的简单操作函数

(1)清除

           driver.find_element_by_id().clear()

(2)点击

          driver.find_element_by_id().click()

(3)输入

          driver.find_element_by_id().send_keys("username")

(4)提交表单,可当做回车键使用,与click()互换使用,范围比click()小

         driver.find_element_by_id().submit()

(5)元素大小

         size=driver.find_element_by_id().size

(6)获取元素的文本

         text=driver.find_element_by_id().text

(7)获取类型

        driver.find_element_by_id().get_attribute(‘type’)

(8)是否可见,返回值是ture or false

         driver.find_element_by_id().is_displayed()

(9)获取当前页面标题

         title=driver.title

(10)获取当前页面的url

          url=driver.current_url

(11)隐式等待

           driver.implicitly_wait(10)

 

三.常用的函数

 

1.控制浏览器

(1)控制浏览器大小

         driver.set_window_size(400,800)

(2)控制浏览器前进后退

         driver.back()

        driver.forward()

(3)刷新

         driver.refresh()

          

2.鼠标事件

        导入ActionChains

        from selenium.webdriver.common.action_chains import ActionChains 
         

(1)鼠标右击

         right_click=driver.find_element_by_id("xx")        #定位要右击的元素

         ActionChains(driver).context_click(right_click).perform()

(2)鼠标悬停–     move_to_element()

         above=driver.find_element_by_id("id")     

         ActionChains(driver).move_to_element(above).perform()

(3)鼠标双击操作

         ActionChains(driver).double_click().perform()

(4)鼠标拖动操作—-drag_and_drop(source,target)

          source=driver.find_element_by_id("xx")#source:鼠标拖动的源元素

          target=driver.find_element_by_id("xx")#target:鼠标拖动的目标元素

          ActionChains(driver).drag_and_drop(source,target).perform()

 

3.键盘事件

     导入Keys类

     from selenium.webdriver.common.keys import Keys

(1)driver.find_element_by_id().send_keys(Key.BACK_SPACE)           #删除键

(2)driver.find_element_by_id().send_keys(Keys.SPACE)                      #空格键

(3)driver.find_element_by_id().send_keys(Keys.TAB)                            #制表键

(4)driver.find_element_by_id().send_keys(Keys.ESCAPE)                   #回退键

(5)driver.find_element_by_id().send_keys(Keys.ENTER)                      #回车键

(6)driver.find_element_by_id().send_keys(Keys.CONTROL,’a’)           #全选

(7)driver.find_element_by_id().send_keys(Keys.CONTROL,’c’)           #复制

(8)driver.find_element_by_id().send_keys(Keys.CONTROL,’x’)           #剪切

(9)driver.find_element_by_id().send_keys(Keys.CONTROL,’v’)           #粘贴

(10)driver.find_element_by_id().send_keys(Keys.F1)                            #键盘F1

 

4.警告框的处理— switch_to_alert()

(1)获取警示框的文本

         driver.switch_to_alert().text

(2)接受警示

         driver.switch_to_alert().accept()

(3)解散警示框

         driver.switch_to_alert().dismiss()

(4)发送文本至警告

        driver.switch_to_alert().send_keys(keysToSend)

 

5.上传文件—-send_keys()

        driver.find_element_by_id("file").send_keys(‘D:\\upload_file.txt’)

 

6.操作cookie

(1)获取全部

         driver.get_cookie()

(2)获取cookie的name

         driver.get_cookie(name)

(3)添加cookie信息

         driver.add_cookie({‘name’:’aa’,’value’:’bb’})

(4)删除特定的cookie

        driver.delete_cookie(name,optionString)

(5)删除全部cookie

         driver.delete_all_cookies()

转发链接:https://www.waitig.com/webdriver%E5%AE%9A%E4%BD%8D%E5%85%83%E7%B4%A0%E7%9A%84%E6%96%B9%E6%B3%95%E5%92%8C%E5%9F%BA%E7%A1%80%E5%87%BD%E6%95%B0%E7%9A%84%E4%BD%BF%E7%94%A8.html

posted @ 2018-03-15 21:46  月芽  Views(173)  Comments(0)    收藏  举报