WebDriver提供了8种元素定位方法。
以百度搜索页面为例,环境:selenium3+python3.7
from selenium import webdriver
driver_in = webdriver.Chrome("chromedriver安装所在路径")
driver_in.get("https://www.baidu.com/")
1、id定位
在输入框输入hello world
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
Inputt=driver_in.find_element_by_id("kw")
Inputt.send_keys("hello world")
2、name定位
在输入框输入hello world
Inputt=driver_in.find_element_by_name("wd")
Inputt.send_keys("hello world")
3、tag定位
html使用tag来定义不同页面的元素。例如,input(定义输入框),a(定义超链接),table(定义表格),div(定义分区)……
一般使用tag定义一类功能,所以实际上去定义单个元素概率很低。
#执行之后会报错
Inputt=driver_in.find_element_by_tag_name("input")
4、class定位
class属性支持多个类名,中间以空格分开,在使用class定位时使用的是class_name。
<input type="submit" id="su" value="百度一下" class="bg s_btn">
在搜索框搜索hello world
Search=driver_in.find_element_by_class_name("s_btn").click()
5、link定位
定位文本链接,是需要完全匹配,精确定位。例如百度输入框上的几个文字链接。
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>
<a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
……
<a href="http://www.baidu.com/more/" name="tj_briicon" class="bri" style="display: block;">更多产品</a>
点击link进行页面跳转。
driver_in.find_element_by_link_text("新闻").click()
6、partial link定位
partial link是对link的补充,是部分文字匹配,模糊定位。当链接文本过长时选择partial link对部分文字进行定位,当然需要保证这部分文字是可以唯一标识这个链接。
driver_in.find_element_by_partial_link_text("更多").click()
- 注意当页面跳转之后,使用上述元素定位会报错,例如在百度搜索页面,搜索之后没有切换窗口,那么再次使用定位元素会报错
还有两种元素定位方法:XPath定位和CSS定位。
分篇记录。