八大基本定位方式
- by_id
- by_name
- by_link_text
- by_tag_name
- by_partial_link_text
- by_class_name
- by_xpath
- by_css_selector
使用优先级:
首先依次考虑:ID、name、CSS (常用)、Xpath
一般不用:link_text、class_name、tag_name
示例
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('file:///D:/TestSoft/Selenium/test.html')
# 1、根据id定位,只返回找到的第一个元素
ele = browser.find_element_by_id('id_abc')
print(ele.text) # 获取元素文本值
# 2、根据name定位,只返回找到的第一个元素
ele = browser.find_element_by_name('name_abc')
print(ele.text)
# 3、根据链接文本进行定位,只返回找到的第一个元素
ele = browser.find_element_by_link_text("点击进入百度")
ele.click()
# 4、根据tag_name定位,只返回找到的第一个元素
ele = browser.find_element_by_tag_name("span")
print(ele.text)
# 5、模糊匹配,只返回找到的第一个元素
ele = browser.find_element_by_partial_link_text('百度')
ele.click()
# 6、根据class进行定位,只返回找到的第一个元素
ele = browser.find_element_by_class_name("class_name")
print(ele.text)
# 7、根据xpath进行定位,只返回找到的第一个元素
ele = browser.find_element_by_xpath("/html/body/div/ul/li[2]")
print(ele.text)
# 8、根据css进行定位,只返回找到的第一个元素
ele = browser.find_element_by_css_selector("body > div > ul > li:nth-child(2)")
print(ele.text)
browser.quit() # 退出浏览器
附件
test.html文件内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p id="id_abc">获取指定id标签内容</p>
<a name="name_abc">获取指定name标签内容</a>
<br>
<a href="https://www.baidu.com">点击进入百度</a>
<br>
<span>span标签</span>
<br>
<span class="class_name">获取指定class标签内容</span>
<br>
<div>
<ul>
<li>1、食品</li>
<li>2、饮料</li>
</ul>
</div>
</body>
</html>