曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作

这篇具有很好参考价值的文章主要介绍了曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

上篇文章我们学习了Selenium页面操作原理及如何高效的进行元素定位

那Selenium的工作原理又是什么?是如何驱动浏览器的呢?这篇文章为你讲解Selenium工作原理及Webdriver对浏览器的配置和操作。

Python测试交流群:8140 78962



二、Selenium工作原理

Selenium进行自动化测试主要依赖三项:

  1. 测试脚本(你写的代码)
  2. 浏览器驱动(Webdriver,比如:chromedriver)
  3. 浏览器

其中核心部分就是Webdriver,它提供了一系列的API来供我们使用,以至于驱动浏览器做一些操作。
它的工作原理有时也会作为面试题,不少小伙伴Selenium用的很熟练,但因为答不出它的工作原理而被Pass!
所以我简单总结了一下,为了面试不被pass的标准答案

Webdriver工作原理:

webdriver用于通信用户编写的代码和浏览器。
当使用类似webdriver.Chrome()启动浏览器后,webdriver会将启动的浏览器绑定到特定的端口,并作为服务端 (类似前后端分离项目的后端)

客户端 (用户编写的代码),通过ComandExecutor发送HTTP请求给服务端
服务端通过WebService将其翻译为浏览器读的懂的脚本传给浏览器进行执行,执行完成后,浏览器把执行结果返回给WebService,WebService再把返回的结果做一些封装,然后返回给客户端。
曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作,曲鸟全栈UI自动化教学,selenium,爬虫,面试,python


三、Webdriver常用配置

1. 启动浏览器

通过查看Selnium->webdriver文件夹,发现Selnium支持6种浏览器:
chromeedgefirefoxieoperasafari
曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作,曲鸟全栈UI自动化教学,selenium,爬虫,面试,python


这里用谷歌、火狐的启动来举例

  1. 启动谷歌浏览器(需要chromedriver)
from selenium import webdriver
browser = webdriver.Chrome()

  1. 启动火狐浏览器(需要geckodriver)
from selenium import webdriver
browser = webdriver.Firefox()

2. Webdriver配置项

webdriver有很多配置项,例如设置请求头、隐藏浏览器运行、配置Webdriver路径等;下面为你介绍常用的配置项:

2.1 首先调用对应的配置类(以chrome举例)

chrome_options = webdriver.ChromeOptions()

2.2 最大化浏览器窗口

 chrome_options.add_argument('--start-maximized')

2.3 隐藏浏览器运行(无界面Linux时,不加这条会报错)

chrome_options.add_argument('--headless')

2.4 给予root执行权限(Linux上运行时需要)

chrome_options.add_argument('--no-sandbox')

2.5 不加载图片,提升速度

chrome_options.add_argument('blink-settings=imagesEnabled=false')

2.6 使用已打开的浏览器

以chrome浏览器举例,我们可以通过【cmd】在chrome所在目录执行命令:

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"

-remote-debugging-port:用于配置浏览器启动占用的端口,可以指定任何未被占用的端口
-user-data-dir:指定创建新Chrome配置文件的目录;它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。


然后在代码中加入下面的配置即可使用刚刚打开的浏览器了

chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

这样做的好处是:

  1. 是一个由chrome启动的浏览器,不容易被所测网站检测出是自动化程序、有利于爬虫的过检测。
  2. 基于该运行浏览器所产生的缓存、cookie等数据都会被记录。下次启动的时候不用重新登录帐号,也不用因为没有缓存导致页面加载时间过长。

2.7 手动指定浏览器位置

当存在多个谷歌浏览器或谷歌浏览器环境异常时,可以指定其浏览器文件路径进行驱动

chrome_options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

2.8 隐藏【受到自动化测试软件的控制】提示

曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作,曲鸟全栈UI自动化教学,selenium,爬虫,面试,python


通过该配置项可以隐藏上图的提示

chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

2.9 指定浏览器大小

下面的代码会启动一个宽100,长1000的浏览器

chrome_options.add_argument(f'--window-size={100},{1000}')

2.10 指定浏览器位置

下面的代码会启动一个左边距为100,上边距为200的浏览器

chrome_options.add_argument(f'--window-position={100},{200}')

2.11 指定浏览器启动语言

有时候开启浏览器需要特别的语言版本,如果未进行配置则启动的是系统语言对应的浏览器,我们的被测网站如果是英文的,但系统是中文的,开启的浏览器就是中文的,提交的某些数据按照zh_CN.UTF-8的格式提交了,导致数据报错,那么我们就需要设置浏览器启动语言。

chrome_options.add_argument('lang=en-us')

2.12 更换浏览器请求头

有时候需要模拟手机访问某些页面的时候,可以通过配置user-agent项来实现
下面的代码会将浏览器模拟为安卓手机访问

user_ag = 'MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 7.3.7; zh-cn; MB200 Build/GRJ22;CyanogenMod-7) ' \
              'AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 '
chrome_options.add_argument('user-agent=%s' % user_agent)

执行效果


曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作,曲鸟全栈UI自动化教学,selenium,爬虫,面试,python

2.13 设置浏览器代理

chrome_options.add_argument('--proxy-server=你的代理ip地址')

2.14 使用配置

下面的代码会【最大化窗口】且【不加载图片】的启动一个浏览器:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--start-maximized')
chrome_options.add_argument('blink-settings=imagesEnabled=false')
browser = webdriver.Chrome(options=chrome_options)

3. Webdriver常用操作

3.1 获取浏览器名称

browser.name

3.2 最大化浏览器窗口

browser.maximize_window()

3.3 最小化浏览器窗口(Selenium4支持)

browser.minimize_window()

3.4 全屏窗口

类似浏览器中按下【F11】

browser.fullscreen_window()

3.5 访问指定网址

browser.get("https://www.baidu.com") #访问百度

3.6 获取当前页url

browser.current_url

3.7 获取当前页的title

browser.title

3.8 获取当前页窗口句柄

browser.current_window_handle

3.9 截屏当前窗口

browser.save_screenshot('test.png')  #截取当前窗口并命名为`test.png`保存

3.10 刷新

browser.refresh()

3.11 前进(浏览器的【前进】按钮)

browser.forward()

3.12 后退(浏览器的【后退】按钮)

browser.back()

3.13 设置浏览器大小

设置浏览器宽为480,高为800

browser.set_window_size(480, 800)

3.14 设置浏览器位置

设置浏览器宽为480,高为800

browser.set_window_position(480, 800)

3.15 获取浏览器大小

设置浏览器宽为480,高为800

browser.get_window_size(480, 800)

3.16 获取浏览器位置

设置浏览器宽为480,高为800

browser.get_window_position(480, 800)

3.17 执行js脚本

如果需要进行页面滑动(模拟鼠标滚轮操作)可以通过执行js脚本实现
例如滑动到'//*[@id="asideHotArticle"]/h3'元素:

target = browser.find_element(By.XPATH, '//*[@id="asideHotArticle"]/h3')
browser.execute_script("arguments[0].scrollIntoView();", target)

3.18 切换窗口

有多个窗口时,可以通过下面的方法进行切换才能够顺利的进行定位

browser.switch_to.window(browser.window_handles[1])

3.19 切换iframe

页面中的iframe弹窗,需要使用下面的代码切换才能够顺利的进行定位

iframe = browser.find_element(By.CSS_SELECTOR, "#modal > iframe")
# 切换到iframe
browser.switch_to.frame(iframe)

如果iframe有明确的id则可以直接这样写

driver.switch_to.frame('appIframe-product')

3.20 离开iframe

离开iframe,回到默认页面

browser.switch_to.default_content()

3.21 关闭当前窗口

有多个页面的时候,只会关闭当前所在页面

browser.close()

3.22 退出浏览器

会直接关闭浏览器,所有页面都将关闭

browser.quit()

四、总结

实际上webdriver的操作还有很多,比如远程控制项的配置,cookie相关配置等,但都不常用,掌握这些些已经足够了!

下一篇文章会对selenium的键盘鼠标事件进行详解,欢迎订阅本专栏!文章来源地址https://www.toymoban.com/news/detail-567805.html





👇🏻欢迎关注公众号【曲鸟讲测试开发】,付费教程免费看,带你从0开始学测开!👇🏻

到了这里,关于曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium UI自动化测试入门

    1.先下载Pycharm编辑器, 网站:下载地址 2.安装python环境包 地址:Download Python | Python.org    安装的时候记住勾选自动配置环境变量 3.在pycharm中配置python执行器路径   4.安装selenium库 pip install selenium==4.1.1  查看当前selenium版本 按住ctrl+鼠标左键点击  显示版本号 5.安装chromdriv

    2024年02月09日
    浏览(57)
  • Selenium UI自动化实战过程记录

    1.1项目框架 项目如何使用框架: 本项目采用unitest框架 设计模式是如何应用:本项目采用pageobject设计模式 UI对象库思想 项目设计 一个模块(被测项目的页面)对应一个py文件及一个测试类(测试文件) 每一个测试页面(系统的页面)中存储页面元素及此页面中涉及到的功能

    2024年02月04日
    浏览(29)
  • Python Selenium UI自动化测试_python 自动化ui测试,Kotlin可能带来的一个深坑

    :层级选取,如:#formspaninput 举例:div.entry-sider-panelsection.entry-sider-panel__bddivdiv:nth-child(1) 3.3 元素操作 3.3.1 输入内容 send_keys() 3.3.2 点击元素 click() 3.3.3 清空元素文本内容 clear() 3.3.4 获取元素文本 text 返回的是字符串 3.3.5 获取元素尺寸 size 返回的是字典 3.3.6 获取元素的属性值

    2024年04月25日
    浏览(28)
  • selenium-基于UI的自动化测试框架

      自动化测试是指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果,将人为驱动的测试行为转化为机器执行的过程   自动化测试包括UI自动化、接口自动化、单元测试自动化。按照这个金字塔模型来进行自动化测试

    2024年02月05日
    浏览(40)
  • python+selenium实现UI自动化(一)

    selenium官方网站 selenium ide 录制工具。 火狐/google/edge插件 selenium webdriver   结合代码来编写自动化用例。提供很多在浏览器上的操作的api,本文主要记录此项的学习过程 selenium grid   分布式。火狐/google/edge上同时运行。把所有用例拆分到多设备上运行,运行效率更高,更快。

    2023年04月24日
    浏览(28)
  • python+selenium封装UI自动化框架

    seleinum框架 框架的思想: 解决我们测试过程中的问题:大量的重复步骤,用自动化来实现 1)配置和程序的分离 2)测试数据和程序的分离 3)不懂编程的人员可以方便使用:使用的时候不需要写程序 4)有日志功能,实现无人值守 5)自动发报告 6)框架中不要有重复的代码,

    2024年02月09日
    浏览(43)
  • UI自动化测试篇 :Selenium2(Webdriver)&TestNG自动化测试环境搭建

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!    最开始学习UI自动化,用的工具是QTP10,用起来确实比较容易上手

    2024年03月10日
    浏览(48)
  • 【Selenium】UI自动化|元素定位常见问题

    分析的可能原因: 页面还没有加载出来,就对页面上的元素进行的操作 元素在iframe中,先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位。 元素在新的窗口中,未切换句

    2024年04月10日
    浏览(38)
  • Selenium之路: UI自动化测试的必备指南

    自动化测试指软件测试的自动化,可以使用软件工具或脚本来执行测试任务的过程,以替代人工进行重复性、繁琐或耗时的测试活动;是将人为驱动的测试行为转化为机器执行的过程 。 自动化测试包括 UI 自动化,接口自动化,单元测试自动化。 Selenium 是 Web 应用中基于 UI

    2024年04月22日
    浏览(50)
  • Pytest+selenium UI自动化测试实战实例

    今天来说说pytest吧,经过几周的时间学习,有收获也有疑惑,总之最后还是搞个小项目出来证明自己的努力不没有白费。 1    确保您已经安装了 python3.x 2    配置 python3+pycharm+selenium2 开发环境     3    安装pytest库 pip install pytest 4    安装pytest -html 报告插件 pip install pytest

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包