selenium自动化测试工具常用操作

Selenium简介

 用于Web 应用程序的自动化测试,允许用户控制浏览器执行自动化任务,例如点击按钮、填写表单、验证页面内容等。


Selenium 特点

  • 跨浏览器支持:Selenium 支持多种主流浏览器,如 Chrome、Firefox、Safari、Internet Explorer 等,可以在不同浏览器中执行相同的测试脚本
  • 多语言支持:Selenium 支持多种编程语言,如 Java、Python、C#、Ruby、JavaScript 等,开发者可以用自己熟悉的语言来编写测试脚本。
  • 自动化Web交互:Selenium 可以模拟真实用户的操作,如点击、滚动、键盘输入等。

更多请查看Selenium 简介 | 菜鸟教程


Selenium 安装

本系列教程将以 Python 为例进行讲解

  1. 打开命令行,输入以下命令来安装 Selenium:
    pip install selenium
    # 更换阿里云镜像源下载
    pip install selenium -i https://mirrors.aliyun.com/pypi/simple/

  2.  下载浏览器驱动

        下载适合你浏览器版本的驱动,并将其路径添加到系统的环境变量中,或者将驱动文件放在         Python 脚本所在的目录下。       


 Selenium的使用

启动selenium

以selenium4为例,selenium4引入了 Service 对象和进一步规范化了 Options 对象的使用。

  • Service 对象:指定 浏览器驱动Driver 的路径,替代直接路径配置,提升稳定性。

  • Options 对象:用于配置浏览器的启动选项,统一浏览器配置接口,支持更多特性。

  1. 导入所需的模块(webdriver 和 ChromeService)。
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service # as ChromeService
    

  2.  创建 ChromeService 对象,指定 ChromeDriver 的路径(替代直接路径配置,提升稳定性)

    service=Service('./chromedriver.exe') 
    #该驱动的位置与python脚本在同一目录下,chromedriver.exe是驱动的名称

  3.  创建 ChromeOptions 对象,用于配置浏览器的启动选项。
    # 启动 Chrome 浏览器
    options = webdriver.ChromeOptions()
    # 防止浏览器自动关闭
    options.add_experimental_option("detach", True) 
    # 移除 "Chrome 正受到自动测试软件控制" 的提示
    options.add_experimental_option("excludeSwitches", ["enable-automation"]) 

  4.  使用 webdriver.Chrome() 启动 Chrome 浏览器,并传入 service 和 options 参数。
    browser = webdriver.Chrome(service=service, options=options)

  5. 测试:打开百度界面
     browser.get('https://www.baidu.com')

 关闭浏览器

使用 quit() 方法关闭浏览器并结束 WebDriver 会话:

browser.quit()

 打开指定的网页:

browser.get("https://www.example.com")

关闭当前网页:

browser.close()

前进和后退:

使用 back() 方法返回上一个页面,使用 forward() 方法前进到下一个页面。

browser.get("https://www.baidu.com")
browser.get("https://www.runoob.com")

browser.back()    # 返回 baidu.com
browser.forward() # 前进到 runoob.com

刷新页面:

browser.refresh()

获取页面标题:

title = browser.title

print("页面标题:", title)

获取当前 URL:

url = browser.current_url
print("当前 URL:", url)

 浏览器窗口操作

最大化窗口:

browser.maximize_window()

最小化窗口:

browser.minimize_window()

设置窗口大小:

browser.set_window_size(1024, 768)  # 设置窗口大小为 1024x768 像素

全屏模式:

browser.fullscreen_window()

 Selenium 元素定位

 在 Selenium 中,元素定位是自动化测试和网页操作的核心,元素定位是指通过某种方式找到网页中的特定元素。

定位一个元素使用find_element(by,value),返回一个元素;

定位多个元素使用find_elements(by,value),返回一个列表。用一个列表去接收。

导入:

from selenium.webdriver.common.by import By

 定位方式by

  1. 通过元素的 id 属性定位,find_element(By.ID, "id_value"),在CSS中id值是唯一的
    element = browser.find_element(By.ID, "username")

  2.  通过 CSS 选择器定位,find_element(By.CSS_SELECTOR, "css_selector")

    element = browser.find_element(By.CSS_SELECTOR, "input#username")
    # input#username具体的值可以在开发者工具中,选择对应的元素后,右键,复制,复制selector
  3.  通过相对XPATH地址定位,find_element(By.XPATH, "xpath_expression")
 element = driver.find_element(By.XPATH, "//input[@id='username']")

相对XPATH地址的确定: 

①/表示从body的子节点查找,//表示从body的孙节点(及以下节点)查找,.//表示从当前元素(job)的孙节点开始查找

②contains()是 XPath 的一个字符串匹配函数,用于检查某个属性是否包含指定的子字符串。适用于class属性有多个值

比如class=job-title clearfix,不能直接使用@class=job-title clearfix(空格后的内容会被忽略),可以使用normalize-space(@class)='job-title highlight',或者使用contains()函数,

div[contains(@class,’job-title’)] 


Selenium元素操作

假设element通过上述操作获取到元素

获取元素文本

element.text

 获取元素属性

element.get_attribute("value")

# value=src,可以获取图像
# value=href,可以获取链接
# value=class,可以获取class属性值
# html标签中的属性值都可以获取

输入文本

element.send_keys('输入你的文本')    #适用于输入框元素

点击元素

element.click()    # 适用于按钮、超链接、单选框、多选框

清除输入框内容

element.clear()

单选框操作

# 如果单选框未被选中,则点击选中
if not element.is_selected():
    element.click()

复选框操作

if not element.is_selected():
    element.click()

下拉列表操作(Select类)

# 导入
from selenium.webdriver.support.select import Select

# 创建Select对象
s=Select(element)

# 1.通过可见文本选择选项
s.select_by_visible_text("Option 1")

# 2.通过值选择选项
s.select_by_value("1")

# 3.通过索引选择选项
s.select_by_index(0)

 Selenium 浏览器操作

Selenium 浏览器操作 | 菜鸟教程

处理iframe

iframe 是嵌入在网页中的另一个网页(这个界面是嵌套在原页面中的)

# 切换到iframe
browser.switch_to.frame("iframe_name")

# 在iframe中查找相关元素

# 切换回原页面
browser.switch_to.default_content()

切换标签页 

一个窗口可以跳转到不同的标签页,或者是打开了新的浏览器窗口(只要是网址发生了变化)

for window_handle in browser.window_handles:
    browser.switch_to.window(window_handle)
    if '标签页关键字' in browser.title:
        break

# 标签页关键字看页面的标题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值