selenium+python自动化测试之页面元素定位

本文将详细讲解如何使用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自动化测试之页面元素定位

基础教程推荐