码迷,mamicode.com
首页 > 其他好文 > 详细

Selenium学习之==>18种定位方式的使用

时间:2018-07-20 18:56:28      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ret   pat   end   win   tag   script   xpath定位   cli   exe   

Selenium的定位方式一共有18种,单数8种,复数8种,最后两种是前面这16种的底层封装

单数形式8种

 1 # 1、id定位
 2 al = driver.find_element_by_id(i1)
 3 al.send_keys(id定位)
 4 
 5 # 2、class定位
 6 bl = driver.find_element_by_class_name(classname)
 7 bl.send_keys(class定位)
 8 
 9 # 3、css selector定位
10 cl = driver.find_element_by_css_selector(#i1)
11 cl.send_keys(css selector定位)
12 
13 # 4、name定位:按照标签中的name属性定位
14 dl = driver.find_element_by_name(name)
15 dl.send_keys(name定位)
16 
17 # 5、link_text 文本内容定位
18 import time
19 time.sleep(1)
20 driver.execute_script(window.scrollTo(0,0);)  # 跳转到网页的最上面
21 time.sleep(1)
22 el = driver.find_element_by_link_text(跳转大师兄博客地址)
23 el.click()
24 
25 # 6、partial_link_text 模糊文本内容匹配
26 import time
27 time.sleep(1)
28 driver.execute_script(window.scrollTo(0,0);)  # 跳转到网页的最上面
29 time.sleep(1)
30 fl = driver.find_element_by_partial_link_text(跳转)
31 fl.click()
32 
33 # 7、Xpath 定位
34 gl = driver.find_element_by_xpath(//input[@placeholder="请通过XPATH定位元素"])
35 gl.send_keys(xpath 定位)
36 
37 # 8、tag_name 标签名定位
38 hl = driver.find_element_by_tag_name(input)
39 hl.send_keys(tag_name 标签名定位)

复数形式也是8种,是以上8种的复数形式,返回的是一个列表

 1 # 1、id定位
 2 als = driver.find_elements_by_id(i1)
 3 als[0].send_keys(id定位)
 4 
 5 # 2、class定位
 6 bls = driver.find_elements_by_class_name(classname)
 7 bls[0].send_keys(class定位)
 8 
 9 # 3、css selector定位
10 cls = driver.find_elements_by_css_selector(input)
11 cls[2].send_keys(定位到第三个input输入框)
12 
13 # 4、name定位:按照标签中的name属性定位
14 dls = driver.find_elements_by_name(name)
15 dls[0].send_keys(name定位)
16 
17 # 5、link_text 文本内容定位
18 import time
19 time.sleep(1)
20 driver.execute_script(window.scrollTo(0,0);)  # 跳转到网页的最上面
21 time.sleep(1)
22 els = driver.find_elements_by_link_text(跳转大师兄博客地址)
23 els[0].click()
24 
25 # 6、partial_link_text 模糊文本内容匹配
26 import time
27 time.sleep(1)
28 driver.execute_script(window.scrollTo(0,0))  # 跳转到网页的最上面
29 time.sleep(1)
30 fls = driver.find_elements_by_partial_link_text(示例)
31 fls[0].click()
32 
33 # 7、Xpath 定位
34 gls = driver.find_elements_by_xpath(//input)
35 gls[4].send_keys(xpath 定位)
36 
37 # 8、tag_name 标签名定位
38 hls = driver.find_elements_by_tag_name(input)
39 hls[5].send_keys(tag_name 标签名定位)

最后两种是前面16种的底层封装

1 driver.find_element(id,i1)
2 driver.find_elements(xpath,//input)

以上两种定位方式,第一个参数填入下面8个字符串,分别对应上面的16种定位方式,单数和复数分别对应

1 "id"
2 "xpath"
3 "link text"
4 "partial link text"
5 "name"
6 "tag name"
7 "class name"
8 "css selector"

下面举例说明:

 1 ali = driver.find_element(id,i1)
 2 ali.send_keys(xxxx)
 3 # 相当于:
 4 al = driver.find_element_by_id(i1)
 5 al.send_keys(xxxx)
 6 
 7 bls = driver.find_elements(css selector,input)
 8 bls[1].send_keys(css selector)
 9 # 相当于:
10 bl = driver.find_elements_by_css_selector(input)
11 bl[1].send_keys(css selector)

总结:

  我们工作当中应该优先使用Css Selector定位,如果定位不到再用Xpath定位。因为查看源代码发现:使用id、name、tag name、class name定位,都会转换成css selector定位,具体源代码如下:

 1     def find_element(self, by=By.ID, value=None):
 2         if self.w3c:
 3             if by == By.ID:
 4                 by = By.CSS_SELECTOR
 5                 value = [id="%s"] % value
 6             elif by == By.TAG_NAME:
 7                 by = By.CSS_SELECTOR
 8             elif by == By.CLASS_NAME:
 9                 by = By.CSS_SELECTOR
10                 value = ".%s" % value
11             elif by == By.NAME:
12                 by = By.CSS_SELECTOR
13                 value = [name="%s"] % value
14         return self.execute(Command.FIND_ELEMENT, {
15             using: by,
16             value: value})[value]
17 
18     def find_elements(self, by=By.ID, value=None):
19         if self.w3c:
20             if by == By.ID:
21                 by = By.CSS_SELECTOR
22                 value = [id="%s"] % value
23             elif by == By.TAG_NAME:
24                 by = By.CSS_SELECTOR
25             elif by == By.CLASS_NAME:
26                 by = By.CSS_SELECTOR
27                 value = ".%s" % value
28             elif by == By.NAME:
29                 by = By.CSS_SELECTOR
30                 value = [name="%s"] % value
31         return self.execute(Command.FIND_ELEMENTS, {
32             using: by,
33             value: value})[value] or []

 

Selenium学习之==>18种定位方式的使用

标签:ret   pat   end   win   tag   script   xpath定位   cli   exe   

原文地址:https://www.cnblogs.com/L-Test/p/9299220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!