第一章 Selenium+WebDriver环境搭建
第二章 Selenium定位方式
第三章 元素常用属性
第四章 自动化中的三种等待
第五章 自动化浏览器设置及句柄、窗口切换操作
第六章 鼠标、键盘操作
第七章 javascript在自动化中的应用
第八章 unittest&断言
第九章 ddt数据驱动
第十章 测试框架搭建过程Python+Selenium+BeautifulReport
一、WebDriver常用的八种定位方式
常用定位方式 | 对应Python中的方法 | selenium4最新写法(关于find_element_by_id被划线)需要导包from selenium.webdriver.common.by import By |
---|---|---|
ID | find_element_by_id() | find_element(by=By.ID, value="") |
XPATH | find_element_by_xpath() | find_element(By.XPATH, value="") |
LINK_TEXT | find_element_by_link_text() | find_element(By.LINK_TEXT, value="") |
PARTIAL_LINK_TEXT | find_element_by_partial_link_text() | find_element(By.PARTIAL_LINK_TEXT, value="") |
NAME | find_element_by_name() | find_element(By.NAME, value="") |
TAG_NAME | find_element_by_tag_name() | find_element(By.TAG_NAME, value="") |
CLASS_NAME | find_element_by_class_name() | find_element(By.CLASS_NAME, value="") |
CSS_SELECTOR | find_element_by_css_selector() | find_element(By.CSS_SELECTOR, value="") |
注意:selenium4版本后,对应第二栏中的方法已经废弃,可以导By包,使用第三栏中的方法。
二、定位方式总结
1、id、name、class_name、tag_name:根据元素的标签或元素的属性进行定位
2、link_text、partial_link_text:根据超链接的文本进行定位
3、xpath:根据元素路径定位
4、css:根据css选择器定位
三、定位方式实操
1、id定位
例如百度的百度一下按钮,id如图:import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #浏览器实例化
driver.get("http://www.baidu.com") #打开网页
time.sleep(3)
driver.find_element(By.ID, "su").click() #通过id找到按钮元素,并点击一下
time.sleep(3)
driver.quit() #退出浏览器
2、name定位
例如百度的更多按钮,如图:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #浏览器实例化
driver.get("http://www.baidu.com") #打开网页
time.sleep(3)
driver.find_element(By.NAME, "tj_briicon").click() #通过name找到按钮元素,并点击一下
time.sleep(3)
driver.quit() #退出浏览器
3、class_name定位
例如百度的搜索输入框,找到元素并填入搜索词,html里的class属性即为class_name元素,如图:import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #浏览器实例化
driver.get("http://www.baidu.com") #打开网页
time.sleep(3)
driver.find_element(By.CLASS_NAME, "s_ipt").send_keys("test") #通过CLASS_NAME找到输入框元素,并输入搜索词
time.sleep(3)
driver.quit() #退出浏览器
4、tag_name定位
注意,tag_name是通过标签名来定位,获取到的元素可能为多个,不唯一。定位效率低,不建议使用此定位方式。
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #浏览器实例化
driver.get("https://www.jd.com/") #打开网页
time.sleep(3)
driver.find_element(By.TAG_NAME, "input").send_keys("手机") #通过TAG_NAME找到输入框元素,并输入搜索词
time.sleep(3)
driver.quit() #退出浏览器
5、link_text定位
link_text与前面的有所不同,它专门用来定位超链接为本(<a>文本值</a>)
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #浏览器实例化
driver.get("https://www.baidu.com/") #打开网页
time.sleep(3)
driver.find_element(By.LINK_TEXT, "新闻").click() #通过LINK_TEXT找到元素,并点击
time.sleep(3)
driver.quit() #退出浏览器
6、partial_link_text定位
partial_link_text定位是对link_text的补充,partial_link_text为模糊匹配,例如:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #浏览器实例化
driver.get("http://news.baidu.com/") #打开网页
time.sleep(3)
driver.find_element(By.PARTIAL_LINK_TEXT, "北京").click() #通过PARTIAL_LINK_TEXT找到包含"北京"的任一条新闻,并点击
time.sleep(3)
driver.quit() #退出浏览器
7、xpath路径定位(绝对/相对路径)
7.1、xpath绝对路径定位
①绝对路径以/开始,如:/html/body/div[1]/div[1]/div[3]/a[6]
②通过浏览器查看元素属性,右击复制xpath快速生成,copy full XPATH
7.2、xpath性对路径定位
①相对路径以//开始,如://*[@id="s-top-left"]/a[6]
②通过浏览器查看元素属性,右击复制xpath快速生成,copy XPATH
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() #浏览器实例化
driver.get("http://www.baidu.com/") #打开网页
time.sleep(3)
driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click() #通过xpath找到元素,并点击,注意因为路径中有双引号,需要将外面改成单引号
time.sleep(3)
driver.quit() #退出浏览器
8、css定位
css概述:
①、css是一种语言,它用来描述HTML和XML的元素显示样式。
②、css语言中有css选择器,在selenium中也可以使用这种选择器来进行元素定位。
③、css定位方式比xpath快,而且css的语法非常强大,推荐使用该方式。
css定位策略:
①、id选择器
②、class选择器
③、元素选择器
④、属性选择器
⑤、层级选择器
随手点赞一次,运气增加一份。