Selenium---重用的定位方法

Posted guo-zhi-jia-123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium---重用的定位方法相关的知识,希望对你有一定的参考价值。

 1 from selenium import webdriver
 2 import time
 3 
 4 # 打开谷歌浏览器
 5 driver = webdriver.Chrome()
 6 
 7 # 在浏览器打开百度网页
 8 driver.get("https://www.baidu.com/")
 9 
10 #延迟两秒
11 time.sleep(2)
12 
13 # 使用网页定位方法
14 
15 # 使用 id 方法定位页面元素
16 # driver.find_element_by_id(‘kw‘).send_keys(‘路飞‘)
17 # driver.find_element_by_id(‘su‘).click()
18 
19 # 使用 class 方法定位元素
20 # driver.find_element_by_class_name(‘s_ipt‘).send_keys(‘路飞‘)
21 # 在这里使用 class 方法定位‘百度一下’按钮会失败
22 # 因为 class_name “bg s_btn” 并不是唯一的名称,他还有子类,报错原因,定位不能使用符合元素
23 # driver.find_element_by_class_name(‘bg s_btn‘)
24 # driver.find_element_by_id(‘su‘).click()
25 
26 # 使用 name 方法定位元素
27 # driver.find_element_by_name(‘wd‘).send_keys("路飞")
28 # 因为 百度按钮 没有提供 name 属性,这里采用别的定位方法来实现定位
29 # driver.find_element_by_id(‘su‘).click()
30 
31 # 使用 tag 方法定位元素
32 # 定位失败 tag 包含的就是<div><input><a>等,页面这些东西太多了,很难通过tag定位到元素
33 # driver.find_element_by_tag_name("input").send_keys("路飞")
34 
35 # 使用link方法定位页面的文本链接(文本链接是需要点击的,所以在后面添加click方法,点击)
36 # driver.find_element_by_link_text(‘新闻‘).click()
37 # driver.find_element_by_link_text(‘地图‘).click()
38 # 使用partial link 方法是定位很长的文本链接的方法,当你使用link方法定位文本链接定位不到的时候
39 # 可以尝试使用 partial link 方法来定位
40 # driver.find_element_by_partial_link_text(‘新闻‘).click()
41 # driver.find_element_by_partial_link_text(‘地图‘).click()
42 # 使用xpath方法定位页面元素
43 # 方法一:利用xpath元素属性定位
44 # driver.find_element_by_xpath(‘//*[@id="kw"]‘).send_keys("路飞")
45 # driver.find_element_by_xpath(‘//*[@id="su"]‘).click()
46 
47 # 方法二:使用绝对路径定位元素(实验失败)
48 #driver.find_element_by_xpath(‘html/body/div/div[2]/div/div/div/from/span/input‘).send_keys(‘路飞‘)
49 #driver.find_element_by_xpath("html/body/div/form/input").send_keys(‘路飞‘)
50 
51 # 方法三:层级和属性结合 (实验失败)
52 # 这种方法是定位不到元素的时候,定位他的上一级,通过定位上一级来定位想要定位的元素
53 # driver.find_element_by_xpath(‘//span[@class="bg s_ipt_wr quickdelete-wrap"]/input‘).send_keys(‘路飞‘)
54 # driver.find_element_by_xpath(‘//*[@id="su"]‘).click()
55 # 方法四:使用逻辑运算符 (实验失败)
56 # driver.find_element_by_xpath(‘//input[@id="kw" and @class="s_ipt"]/span/input‘).send_keys(‘路飞‘)
57 
58 # CSS 方法定位
59 # 1、通过class属性定位
60 # driver.find_element_by_css_selector(‘.s_ipt‘).send_keys(‘路飞‘)
61 # 定位百度一下按钮失败
62 # driver.find_element_by_css_selector(".bg s_btn").click()
63 
64 # 2、使用 id 属性定位
65 # driver.find_element_by_css_selector(‘#kw‘).send_keys(‘路飞‘)
66 # driver.find_element_by_css_selector(‘#su‘).click()
67 
68 # 3、使用签名来定位元素,因为签名的重复率太高了,很难定位到元素,我这里定位失败了
69 # driver.find_element_by_css_selector("input").send_keys("路飞")
70 # 3.1、通过父子级关系来定位元素
71 # driver.find_element_by_css_selector("span>input").send_keys("路飞")
72 # 定位 百度一下 的时候,因为标签重复不能靠父子级关系定位元素
73 # driver.find_element_by_css_selector("span>input").click()
74 # 3.2、通过属性来定位元素
75 # driver.find_element_by_css_selector("[id=‘kw‘]").send_keys("路飞")
76 # driver.find_element_by_css_selector("[id=‘su‘]").click()
77 # 3.2、通过组合来定位元素
78 # driver.find_element_by_css_selector("form.fm>span>input.s_ipt").send_keys("路飞")
79 # 通过组合定位元素失败
80 # driver.find_element_by_css_selector("form.fm>span.bg s_btn_wr>input.bg s_btn").click()
81 
82 # 使用By方法定位元素
83 # 该方法就是统一调用 find_element 方法,只需要传入具体的参数:
84 # 网上查资料补充
85 
86 
87 time.sleep(2)
88 
89 # 退出浏览器
90 driver.quit()

 

以上是关于Selenium---重用的定位方法的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何在控制器的几种方法中重用代码片段

条件片段和导航重用

Selenium基础篇之八大元素定位方式

Selenium 定位元素的8种方法介绍

Selenium:八种元素定位方法

selenium的元素定位方法-By