Selenium实战教程系列(三)--- Selenium中的动作

这篇具有很好参考价值的文章主要介绍了Selenium实战教程系列(三)--- Selenium中的动作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Selenium中针对元素进行的动作在代码中可以分为两类:

  • Selenium::WebDriver::ActionBuilder类中的动作方法
  • Selenium::WebDriver::Element类中的动作方法

其中ActionBuilder类中的动作方法比较丰富,基本涵盖了所有可以进行的操作。 而Element类的动作比较少,基本上只有点击和输入等简单的操作。

鼠标操作

鼠标点击

鼠标单击

driver.find_element(:link_text, 'Link1').click

鼠标双击

el = driver.find_element(id: "some_id")
driver.action.double_click(el).perform

鼠标右键

el = driver.find_element(id: "some_id")
driver.action.context_click(el).perform

鼠标拖放

把元素el1拖到元素el2上面

el1 = driver.find_element(id: "some_id1")
el2 = driver.find_element(id: "some_id2")
driver.action.drag_and_drop(el1, el2).perform

还可以按照指定的与某个元素的相对位置来拖放

el = driver.find_element(id: "some_id1")
driver.action.drag_and_drop_by(el, 100, 100).perform

#drag_and_drop_by(source, right_by, down_by)方法有三个参数,source是操作的对象元素,right_bydown_by是移动的控制参数,顾名思义表示向右和向下的偏移。

移动光标

Selenium中提供了两个移动鼠标光标的方法:

  1. 以当前光标位置为基准移动
driver.action.move_by(100, 100).perform

move_by(right_by, down_by)方法的两个参数也是分别控制移动的偏移量。

  1. 以某个元素为基准移动
el = driver.find_element(id: "some_id")
driver.action.move_to(el).perform #移动到元素el上
driver.action.move_to(el, 100, 100).perform #移动到元素el的右下方(100,100)的位置

键盘操作

键盘输入

键盘上进行的最常用的操作就是输入了。 Selenium中通过send_keys方法来实现

el = driver.find_element(id: "some_id")

#在元素el中输入help
driver.action.send_keys(el, "help").perform

按住和释放按键

有时候需要模拟按住键盘上的各种修饰键的操作,例如按照ctrl键和shift键的动作。

#按住CTRL键
driver.action.key_down(:control).perform
#释放CTRL键
driver.action.key_up(:shift).perform

#在元素el上按住和释放SHIFT键
el = driver.find_element(id: "some_id")
driver.action.key_down(el, :shift).perform
driver.action.key_up(el, :shift).perform

Selenium中定义了键盘上所有按键,可以在Selenium::WebDriver::Keys中查找对应的名称。

清空文本框

在页面操作中有时候需要清空一个输入框中已有的内容,这时候需要用到clear方法。

el = driver.find_element(id: "some_id")
el.clear

需要注意的是,这个操作仅限于在INPUT和TEXTAREA元素上操作,同时也可能无法达到期望的结果,这个时候可以利用键盘的操作CRTL+A(全选)之后再DELETE。

el = driver.find_element(id: "some_id")
el.send_keys([:control, 'a'],:backspace)

窗口操作

处理弹窗

在页面操作中时常要处理弹窗,Selenium中也提供了处理的方法。

alert = driver.switch_to.alert
alert.accept()

切换窗口

在运行自动化测试的过程中,有可能会出现打开了多个窗口的情况,这个时候需要在不同的窗口间切换。

driver = Selenium::WebDriver.for :chrome

driver.get 'http://test.com/windows'
driver.find_element(:id, 'new_window').click

#获取当前所有window对象
windows_array = driver.window_handles

#切换到第一个window
driver.switch_to.window(windows_array.first)

上传文件

上传文件是一个比较独特的用户与浏览器进行交互的场景,和之前的鼠标键盘操作有很大的不同。 在Selenium中,主要是通过send_keys方法向上传文件的入口元素输入文件路径来实现的。这个操作有一个限制就是这个元素的类型必须是input。

driver = Selenium::WebDriver.for :chrome

filename = 'test.txt'
file_path = File.join(Dir.pwd, filename)

driver.get 'http://test.com/upload'
driver.find_element(:tagname, 'input').send_keys file_path

下载文件

下载文件其实并不是由某种动作来实现的,因为界面上触发下载的一般是一个按钮,点击之后触发下载。需要脚本开发者配置的是浏览器对于下载行为的处理,一般是设置一个默认的下载路径,同时设置自动下载不弹窗让用户确认。 下面就以Chrome和firefox上的浏览器配置为例介绍:

Chrome

DOWNLOAD_PATH = "path to store files"
prefs = {:download => {:prompt_for_download => false,
                        :default_directory => DOWNLOAD_PATH
                    },
         }
prefs['profile.default_content_settings.multiple-automatic-downloads'] = 1
driver = Selenium::WebDriver.for :chrome, :prefs => prefs

Firefox

profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.dir'] = DOWNLOAD_PATH
profile['browser.download.folderList'] = 2
profile['browser.helperApps.neverAsk.saveToDisk'] = 'images/jpeg, application/pdf, application/octet-stream'
profile['pdfjs.disabled'] = true

driver = Selenium::WebDriver.for :firefox, profile: profile

这样文件就会自动下载到指定的路径下。文章来源地址https://www.toymoban.com/news/detail-439807.html

到了这里,关于Selenium实战教程系列(三)--- Selenium中的动作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Selenium系列教程 - 文件上传

    在Web UI自动化测试中可能会遇到文件上传的场景,针对该场景我们要区分上传按钮的种类,大体上可以分为两种,一种是input框 input type=\\\"file\\\" ,另外一种就比较复杂,通过js等实现。 查看上传按钮的元素标签为input标签,调用send_keys方法传入文件路径即可,无需模拟弹出wind

    2023年04月08日
    浏览(32)
  • UI自动化Selenium ActionChains鼠标(动作链)

    我们在实现UI自动化过程中,有时会遇到鼠标模拟操作,如鼠标悬停后,菜单划出;鼠标按下后,下拉展开;单击、双击、拖动等等;但我们常常对鼠标的单击和双击比较了解(click和doubleclick)但是其他的如何使用呢?且看下面分解: 1、selenium提供了一个类来专门处理鼠标的

    2024年01月18日
    浏览(50)
  • selenium其他操作/xpath使用/动作链/打码平台

    # 页面中定位元素(标签),两种通用方式     -css选择器     -xpath:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言           # xpath语法     div    选取div标签     /    从根节点选取     //    从匹配选择的当前节点选择文档中的节

    2024年02月15日
    浏览(564)
  • selenium系列--测试脚本--将Excel文件用于测试(unittest数据驱动实战)

    我们只需要写一个函数方法进行调用即可,读取Excel文件,将值进行返回便于下一个接口使用。 import xlrd class Excel_Login: def excel_login(self): file_name = xlrd.open_workbook(r’F:111.xlsx’) sh1 = file_name.sheet_by_index(0) rows = sh1.nrows datalist = [] for i in range(1, rows): datalist.append(sh1.row_values(i)) retu

    2024年04月11日
    浏览(63)
  • 惊艳的Selenium技巧:探索基础和动作链的奇妙世界

    selenium可以帮助我们便捷的获取网站中动态加载的数据,也可以便捷实现模拟登录; selenium是基于浏览器自动化的一个模块,使用可以操作浏览器来帮我们实现一些自动化的操作! Selenium 是一个广泛使用的自动化测试工具,用于测试 Web 应用程序的功能和兼容性。它提供了一

    2024年02月06日
    浏览(36)
  • selenium-webdriver+nodejs等待页面加载完毕后执行后续动作

    最近在用selenium-webdriver+nodejs为自己的项目写一个自动登录、自动跳转页面的自动化工具,减少开发环境中切换不同账号时,频繁操作的目的。(特殊环境,浏览器不允许打开密码记录功能) 网络上大部分是python或者java的项目,作为前端,当然要选择nodejs。 例如:登录后,点

    2024年02月06日
    浏览(45)
  • YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.69】针对遥感图像目标检测中的小目标进行改进CATnet(ContextAggregation模块)

    前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞

    2024年02月11日
    浏览(60)
  • 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)

    1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本。接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用的Selenium方法或者接口(API),通过这些接口(API)或者方法的具体操作,达到能够熟练使用

    2024年02月03日
    浏览(58)
  • 【针对项目在线OJ系统的测试】:Junit+Selenium

    目录 一、背景介绍: 二、导入的依赖: 三、测试模块1:index页面的测试 测试点1:测试\\\"我的OJ系统这4个字是否存在\\\" 测试点2:测试\\\"题目列表\\\"这4个字是否存在 测试点3:测试\\\"编号\\\",\\\"标题\\\",\\\"难度\\\"三者是否存在 测试点4:测试题目列表的元素 测试步骤1:明确需要哪些参数

    2023年04月16日
    浏览(39)
  • selenium+python web自动化测试框架项目实战实例教程

    自动化测试对程序的回归测试更方便。 由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行... 可以运行更加繁琐的测试 自动化测试的一个明显好处就是可以在很短的时间内运行更多的测试。学习自动化测试最终目的是应用到

    2024年02月06日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包