Selenium提供了8种定位方式。
- id1.
driver.find_element_by_id("kw").send_keys("男神")
- name1.
# name方式:通过元素name属性的值来选择,前提是name属性的值是唯一的
2.driver.find_element_by_name("wd").send_keys("张三")
- class name这种方式就是通过class属性的值来定位,这里面也要判断class属性的值是否唯一,如果class属性的值不唯一就不能使用1.
driver.find_element_by_class_name('s_ipt').send_keys("李红")
- tag name通过标签名字来定位,但是标签名基本都是会重复,所以这个方式基本上就是摆设1.
# 通过 tag_name 的方式定位
2.driver.find_element_by_tag_name('input').send_keys("张无忌")
- link text通过文本的方式定位,元素的文本信息必须写完整,例如 文本信息是hao123 如果只写hao那么就会报错1.
# 测试selenium环境搭建是否成功
2.from selenium import webdriver
3.# 打开浏览器
4.# 在浏览器的打开的时候,可以通过executable_path指定该浏览器驱动的存放路径,但是如果配置了环境变量就不需要设置了
5.driver = webdriver.Chrome()
6.# 设置浏览器最大化
7.driver.maximize_window()
8.# 隐式等待:避免页面没有加载完成,代码就已经执行了导致元素定位失败
9.driver.implicitly_wait(10)
10.# 在浏览器上打开一个网页
11.driver.get("http://www.baidu.com")
12.# 通过文本信息选择元素
13.driver.find_element_by_link_text("hao123").click()
- partial link text这里的是可以通过文本信息部分匹配,不用写完整也可以1.
# 测试selenium环境搭建是否成功
2.from selenium import webdriver
3.# 打开浏览器
4.# 在浏览器的打开的时候,可以通过executable_path指定该浏览器驱动的存放路径,但是如果配置了环境变量就不需要设置了
5.driver = webdriver.Chrome()
6.# 设置浏览器最大化
7.driver.maximize_window()
8.# 隐式等待:避免页面没有加载完成,代码就已经执行了导致元素定位失败
9.driver.implicitly_wait(10)
10.# 在浏览器上打开一个网页
11.driver.get("http://www.baidu.com")
12.# 通过文本信息选择元素
13.driver.find_element_by_partial_link_text("hao").click()
- xpath### 下面列出了最有用的路径表达式:| 表达式 | 描述 | | ——— | ————————————————————————————— | | input | 从当前页面查找所有input标签 | | / | 从根节点选取。 | | // | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 | | . | 选取当前节点。 | | .. | 选取当前节点的父节点。 | | @ | 选取属性。 |xpath中定位的时候有一下几种方式:1. 通过元素标签本身定位:span2. 通过元素的属性来定位://[@id=”kw”] : 从全局任意位置找,只要元素id属性的值为kw的就匹配出来//[@id] : 从全局任意位置找,只要元素有id即可//input[@id=”kw”] :从全局任意位置找input标签,并且input标签有id属性还需要满足id属性的值为kw3. 通过元素的位置查找//span[@id=”s_kw_wrap”]/input : 从全局任意位置查找,span标签id=”s_kw_wrap”,他的儿子input//span[@id=”s_kw_wrap”]/i[2] : 从全局任意位置查找,span标签id=”s_kw_wrap”,找的是第二个i标签1.
# 通过xpath的方式来定位
2.driver.find_element_by_xpath('//input[@id="kw"]').send_keys("张三丰")
- css selector| 选择器 | 例子 | 例子描述 | | —————————————————————————————— | ————————————- | —————————————————————————————— | | .class | .s_ipt | 选择 class=”s_ipt” 的所有元素。 | | .class1.*class2 | .s_lm_hide.s-isindex-wrap | 选择 同时有class属性的值包含 s_lm_hide和s-isindex-wrap 的所有元素 | | | | | | [#*id*](CSS #id 选择器) | #kw | 选择 id=”kw” 的元素。 | | [*](CSS * 选择器) | *| 选择所有元素。 | | [*element*](CSS element 选择器) | p | 选择当前页面中的所有元素。 | | [*element*.*class*](CSS element.class 属性) | input.s_ipt | 选择 class=”s_ipt” 的所有 input 元素。 | | [*element*,*element*](CSS element,element 选择器) | div, p | 选择所有元素和所有元素。 | | [*element* *element*](CSS element element 选择器) | div p | 选择元素内的所有元素。 | | [*element*>*element*](CSS element>element 选择器) | div > p | 选择父元素是的所有元素。 | | [*element*+*element*](CSS element+element 选择器) | div + p | 选择紧跟元素的首个**元素。 | | [*element1*
element2](CSS3 element1element2 选择器) | p ~ ul | 选择前面有元素的每个- 元素。 |
本文转载自: https://blog.csdn.net/qq_48065576/article/details/127049052
版权归原作者 喜喜喜喜宝 所有, 如有侵权,请联系我们删除。
版权归原作者 喜喜喜喜宝 所有, 如有侵权,请联系我们删除。