美文网首页
Selenium简介

Selenium简介

作者: Domibaba | 来源:发表于2023-08-17 13:31 被阅读0次

Selenium简介

selenium是一个web浏览器自动化测试框架,它使用的太过于广泛以致于基于Selenium WebDriver衍生出W3CWebDriver标准(WebDriver简介)。它主要包含Selenium客户端、Selenium服务端、Selenium WebdriverSelenium Grid(支持分布式部署,本文不展开),可能的组网图连接请参考这里

  • Selenium客户端:创建自动化测试脚本,跟本地(Selenium Webdriver)或远程(Selenium Server (Remote WebDriver))驱动进行交互,支持多种语言包括C#RubyJavaPythonJavaScript

  • Selenium服务端:这里指的是位于服务端机器上的Java小程序,用于监听客户端的请求,并调用不同的驱动来控制浏览器的行为,主要用于远程测试(客户端和服务端不在同一个机器)。

  • Selenium Webdriver:能控制浏览器行为的驱动,不同的浏览器会提供不同的能力/命令,因此会有不同的驱动实现。通常,Selenium Webdriver和被测浏览器要在同一台机器上,例如ChromeDriver是用于Chrome相关浏览器的驱动。

  • Selenium Grid:如果需要在多个机器上进行分布式测试,需要用到该组件。实际上,如果是跟驱动、被测浏览器在同一台机器上,它就是Selenium服务端。

1、创建会话

  • 创建本机测试会话

    客户端测试脚本、驱动、浏览器位于同一台机器。因此客户端提供了Service对象,用于管理与驱动的交互和控制,而不需要额外的Selenium服务端。例如对于Chrome浏览器:

    service = ChromeService()
    driver = webdriver.Chrome(service=service)
  • 创建远程测试会话

    客户端和驱动位于不同的机器,客户端需要指定服务端的地址进行会话的建立(通过指定驱动支持的能力参数)。因此这种情况下,需要在远程服务端机器上安装服务端程序(包含驱动),客户端脚本实例如下:

  from selenium import webdriver
  chrome_options = webdriver.ChromeOptions()
  chrome_options.set_capability("browserVersion", "67")
  chrome_options.set_capability("platformName", "Linux")
  driver = webdriver.Remote(
   command_executor='http://www.xxx.com',
   options=chrome_options
  )

2、Selenium定义所有浏览器应支持的能力参数集

具体描述 默认值
browserName 指定被测浏览器的名称,如果指定的浏览器未安装,会话将创建失败。
browserVersion 指定被测浏览器的版本,如果指定的浏览器与实际版本不匹配,例如指定的版本是75,实际浏览器的版本是80,那么会话将创建失败。
pageLoadStrategy 指定页面加载策略,有三个策略:1)normal,默认值,等待所有的资源加载完成;2)eagerDOM访问已经准备好,但是其他资源例如图片仍在加载中;3)none,完全不要阻塞WebDriver normal
platformName 服务端操作系统版本。
acceptInsecureCerts 指示浏览器是否信任过期或者无效的TLS证书。设置为true,浏览器将信任无效的证书。所有自签名的证书默认被信任。 false
timeouts 会话相关的超时时间设置,单位是毫秒。有以下几类时间:1)脚本超时时间,中止当前浏览上下文的自己执行脚本的超时时间,默认是30000毫秒;2)页面加载超时,当前浏览上下文中的页面加载超时时间,默认是300000毫秒;3)隐性等待时间,界面元素定位时的等待时间。
unhandledPromptBehavior 当前会话的用户提示处理程序,默认是dismiss and notify state dismiss and notify
setWindowRect 布尔值,表明远端是否支持所有的窗口调整和定位命令。 false
strictFileInteractability 表示是否应该对输入type=file元素应用严格的可交互性检查,默认禁止。 false
proxy 定义当前会话的代理配置。

3、编写web浏览器自动化测试的步骤

编写Selenium自动化脚本的八个步骤:

  • 启动会话

  • 在浏览器上执行动作

  • 请求浏览器的信息

  • 设定等待策略:当前界面元素的状态同步是最大的挑战之一,必须要保证界面元素在被定位前已经呈现,所以使用哪种等待策略就非常重要。

  • 查找界面元素

  • 在查找到的界面元素上执行动作

  • 请求该界面元素的信息

  • 结束会话

4、实例展示

本文的客户端语言是Python,实现一个对本机的Chrome浏览器的自动化测试脚本,它将打开浏览器,输入一个网址,并获取返回结果。

准备工作:

注意,ChromeDriver要和Chrome版本匹配。

1、下载ChromeDriver,地址:https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1134343%2Fchromedriver_linux64.zip?generation=1682290630542383&alt=media

2、下载Chrome浏览器:当前最新的ChromeDriver只支持到Chrome114版本,所以要下载114版本的Chrome浏览器,地址:https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1134343%2Fchrome-linux.zip?generation=1682290626198822&alt=media

3、编写测试脚本

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service as ChromeDriverService
from selenium.webdriver.chrome.options import Options

def test_first_selenium_for_chrome():

 # 启动会话
 chrome_driver_path = "/home/chrometest/chromedriver/chromedriver" # 指定ChromeDriver的路径
 options = Options()
 options.binary_location = "/home/chrometest/chrome/chrome" # 指定Chrmoea浏览器的路径
 service = ChromeDriverService(executable_path=chrome_driver_path)
 driver = webdriver.Chrome(service=service, options=options)

 # 在浏览器上执行动作,此处是指定浏览器要打开的网址(selenium官网提供的测试地址)
 url = "https://www.selenium.dev/selenium/web/web-form.html"
 driver.get(url)

 # 请求浏览器的信息:获取指定网址执行结果
 title = driver.title

 # 设置等待策略:此处是固定等待0.5S
 driver.implicitly_wait(0.5)

 # 定位指定的界面元素
 text_box = driver.find_element(by=By.NAME, value="my-text")
 submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")

 # 在定位到的元素上执行动作
 text_box.send_keys("Selenium")
 submit_button.click()

 # 获取元素执行动作后的信息
 message = driver.find_element(by=By.ID, value="message")
 value = message.text
 assert value == "Received!"

参考链接

  1. selenium官方介绍连接

相关文章

网友评论

      本文标题:Selenium简介

      本文链接:https://www.haomeiwen.com/subject/uztrmdtx.html