Eight basic positioning methods
- by_id
- by_name
- by_link_text
- by_tag_name
- by_partial_link_text
- by_class_name
- by_xpath
- by_css_selector
Use priority:
First consider in order: ID, name, CSS (commonly used), Xpath
generally not used: link_text, class_name, tag_name
Example
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() # 退出浏览器
annex
The content of the test.html file:
<!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>