从零开始编写Web自动化测试脚本(二)--Selenium定位方式

第一章 Selenium+WebDriver环境搭建
第二章 Selenium定位方式
第三章 元素常用属性
第四章 自动化中的三种等待
第五章 自动化浏览器设置及句柄、窗口切换操作
第六章 鼠标、键盘操作
第七章 javascript在自动化中的应用
第八章 unittest&断言
第九章 ddt数据驱动
第十章 测试框架搭建过程Python+Selenium+BeautifulReport



一、WebDriver常用的八种定位方式

常用定位方式对应Python中的方法selenium4最新写法(关于find_element_by_id被划线)需要导包from selenium.webdriver.common.by import By
IDfind_element_by_id()find_element(by=By.ID, value=“”)
XPATHfind_element_by_xpath()find_element(By.XPATH, value=“”)
LINK_TEXTfind_element_by_link_text()find_element(By.LINK_TEXT, value=“”)
PARTIAL_LINK_TEXTfind_element_by_partial_link_text()find_element(By.PARTIAL_LINK_TEXT, value=“”)
NAMEfind_element_by_name()find_element(By.NAME, value=“”)
TAG_NAMEfind_element_by_tag_name()find_element(By.TAG_NAME, value=“”)
CLASS_NAMEfind_element_by_class_name()find_element(By.CLASS_NAME, value=“”)
CSS_SELECTORfind_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与前面的有所不同,它专门用来定位超链接为本(文本值)
在这里插入图片描述

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选择器
③、元素选择器
④、属性选择器
⑤、层级选择器

随手点赞一次,运气增加一份。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拒绝内卷的小测试

感谢老板的投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值