本文将详细讲解如何使用selenium和python实现自动化测试中的页面元素定位。
本文将详细讲解如何使用selenium和python实现自动化测试中的页面元素定位。
什么是selenium
Selenium是一个基于浏览器的自动化测试工具,可以模拟人类对网站的操作,用于自动化测试。Selenium支持多种语言,包括python,因为其易学易用、功能强大,成为自动化测试的首选语言。
Selenium+Python实现页面元素定位的方法
页面元素定位是自动化测试中的一个重要环节,它是定位页面上的各种元素(如文本框、按钮、下拉框等)的过程。Selenium提供了多种定位方式,主要包括以下几种:
- id
- name
- class name
- tag name
- link text
- partial link text
- xpath
- css selector
接下来,我们将介绍如何使用这几种方式来定位页面元素。
安装selenium库
在使用selenium进行自动化测试之前,需要安装selenium库。
pip install selenium
安装webdriver
Selenium需要与一个浏览器进行交互,因此需要安装浏览器对应的webdriver。下面是各个浏览器对应的webdriver下载地址:
- Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
- Firefox: https://github.com/mozilla/geckodriver/releases
- Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
- Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/
确定需要定位的元素
在进行页面元素定位之前,需要先确定需要定位的元素,方法如下:
打开网页,使用开发者工具查看元素信息,获取元素的id、name、class、tag name、link text、partial link text、xpath、css selector等属性信息。
使用id定位元素
id是页面元素的唯一标识符,可以通过id来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.ID, "kw")
使用name定位元素
name是页面元素的名称,可以通过name来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.NAME, "wd")
使用class name定位元素
class name是页面元素的类名,可以通过class name来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.CLASS_NAME, "s_ipt")
使用tag name定位元素
tag name是标签的名称,可以通过tag name来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.TAG_NAME, "input")
使用link text定位元素
link text是链接的文本内容,可以通过link text来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.LINK_TEXT, "新闻")
使用partial link text定位元素
partial link text是链接的部分文本内容,可以通过partial link text来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.PARTIAL_LINK_TEXT, "百度")
使用xpath定位元素
xpath是一种路径表达式语言,可以通过xpath来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.XPATH, "//input[@id='kw']")
使用css selector定位元素
css selector是一种选择器语言,可以通过css selector来定位元素,示例代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
element = driver.find_element(By.CSS_SELECTOR, "input#kw")
示例1:模拟登录网站
以下是一个使用selenium和python模拟登录网站的例子:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.example.com/login")
# 输入用户名和密码
username = driver.find_element(By.ID, "username")
password = driver.find_element(By.ID, "password")
username.send_keys("your_username")
password.send_keys("your_password")
# 点击登录按钮
login_button = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
login_button.click()
# 等待页面跳转
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
try:
WebDriverWait(driver, 10).until(EC.url_contains("home"))
print("登录成功")
except TimeoutException:
print("登录失败")
finally:
driver.quit()
示例2:页面元素操作
以下是一个使用selenium和python操作页面元素的例子:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("https://www.example.com")
# 定位输入框
input_element = driver.find_element(By.ID, "input-box")
# 输入内容
input_element.send_keys("hello world")
input_element.send_keys(Keys.ENTER)
以上就是selenium+python自动化测试之页面元素定位的完整攻略。
本文标题为:selenium+python自动化测试之页面元素定位
基础教程推荐
- 前端面试题 - HTML 中的长度单位 2023-10-28
- Jquery serialize()方法使用 2023-08-31
- Vue 配置脚手架CLI 3 2023-10-08
- 如何实现美观的页面边框——CSS border详解 2023-10-08
- vue数据双向绑定,12年高级工程师的“飞升之路”,大牛最佳总结 2023-10-08
- vue-electron中修改表格内容并修改样式 2023-07-09
- Ajax返回的json遍历取值并显示到前台的方法 2023-02-15
- JavaScript设计模式之单例模式 2022-10-22
- JS中的async与await怎么使用 2023-08-08
- php – 从数据库生成静态HTML文件 2023-10-26