selenium编写脚本_Selenium脚本编写技巧和窍门

selenium编写脚本

如果您刚刚开始学习Selenium,则以下技巧和窍门将成为您的救星。 这些技巧和窍门具有您可能会忘记的所有基本知识,将帮助您记住所有这些。 您只需浏览一次,几秒钟后您便会了解所有内容。 让我们一一看一下所有的技巧和窍门。

  • 创建Webdriver实例的最佳方法

您可以使测试通用。 第一步是通过传递配置文件中的值来初始化浏览器。 您可以将一个键作为浏览器,并将值作为Chrome,Firefox或IE。 然后,您可以根据传递给浏览器的值来初始化浏览器。 让我们看看将要涉及的代码。在此处添加段落文本。

public static WebDriver getBrowser(String browserName)
{
If(driver == null)
{
if(browserName.equals(“firefox”))
{
driver = new FirefoxDriver();
}
else if(browserName.equals(“Chrome”))
{
driver=new ChromeDriver();
}
else if(browserName.contains(“IE”))
{
driver=new InternetExplorerDriver();
}
}
return driver;
}
  • 检查元素是否存在的最佳方法

如果必须检查Web应用程序中是否存在某个元素,则可以通过获取Web元素的大小然后检查它是否大于零来轻松地做到这一点。

布尔值isElementExists = driver.findElements(By.xpath(“”))。size()> 0

  • 如何等待页面完全加载?

有时,页面需要花费一些时间来加载,因此您必须等待一段时间才能完全加载页面。 为此,您必须首先检查它是否正确装入,然后可以对其进行任何其他操作。 您可以使用Javascriptexecutor检查页面是否完全加载。

wait.until(new Predicate < WebDriver > () {@Overridepublic Boolean waitPageLoaded(WebDriver driver) {return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");}});
  • 如何使用Selenium Webdriver

有时,在执行过程中截取屏幕截图以了解出了什么问题非常重要。 该死的说要用Selenium来做。 您可以拥有Selenium驱动程序,然后将其强制转换为“截屏”界面。 创建它的一个实例,然后使用它来获取屏幕截图。 您可以使用工具包方法.getScreenshotAs,然后可以指定期望的屏幕截图格式。

//将屏幕快照存储在当前项目目录中

字符串screenShot = System.getProperty(“ user.dir”)+“ \\ screenshottest.png”;

//广播Webdriver来截取屏幕截图

文件srcFile =(((TakesScreenshot)驱动程序).getScreenshotAs(OutputType.FILE);

//保存屏幕截图

FileUtils.copyFile(srcFile,new File(screenShot));

  • 如何在Selenium Webdriver中 获取Web元素HTML源

Selenium WebDriver为您提供了一种名为getAttribute的方法,该方法将允许您获取Web元素的内部HTML。 您可以通过首先获取元素来实现。 之后,您可以使用getAttribute获取Web元素的innerHTML。

字符串html = element.getAttribute(“ innerHTML”);

  • 如何使用“选择类”选择下拉选项?

在Selenium中,如果遇到任何下拉菜单,则可以使用select类在其中选择任何选项。 您可以通过多种方式选择选项。 其中一些方法包括按文本,索引和值进行选择。

Select drp= new Select(Driver.findElement(By.xpath(“”));drp.deselectAll();drp.selectByVisibleText("selectLabel");
  • 如何在 Webdriver中 刷新网页

如果要刷新页面,则可以使用Selenium Web驱动程序的navigation()方法。 然后,您可以使用refresh()方法实际刷新页面,以便从头开始初始化所有元素。

driver.navigate()。refresh();

  • 如何使用Selenium Webdriver 切换到新选项卡

您可以使用Selenium Webdriver轻松切换到新选项卡。 首先要记住的是使用.getWindowHandles(),然后可以切换到具有所有窗口句柄的数组列表的第一个索引。

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());driver.switchTo().window(tabs.get(0));
  • 如何在 Webdriver中 设置驱动程序可执行路径

对于浏览器,chrome和ie,您必须查看驱动程序可执行文件的路径。 要设置路径,您必须在Selenium中使用System.setProperty方法。 让我们看看它的外观。

File ieDriverPath = new File("path//iexploredriver.exe");System.setProperty("webdriver.ie.driver", ieDriverPath.getAbsolutePath());WebDriver driver = new InternetExplorerDriver();
  • 如何切换到新的弹出窗口?

如果要切换到打开的特定窗口,则可以先getAllWindowHandles(),然后使用driver.switchTo()方法切换。

/ Get the current window handle.String hBefore = driver.getWindowHandle();// action which opens lot of windows.// Switch to new windows.for(String hNew: driver.getWindowHandles()){driver.switchTo().window(hNew);}// Close all new windows.driver.close();// Switch back to first window.driver.switchTo().window(hBefore);

但是如果万一,您想专门切换到特定窗口。 您可以获取一个Web元素,并在特定窗口中查看它的可见性。 如果存在,则可以切换到它。

/ Get the current window handle.String hBefore = driver.getWindowHandle();// Click to open new windows.// Switch to window which has a webelement attached to itfor(String hNew: driver.getWindowHandles()){If(driver.findElements(By.xpath(“”)).size()>0){driver.switchTo().window(hNew);}}// Close all new windows.driver.close();// Switch back to first window.driver.switchTo().window(hBefore);
  • 如何单击一个不可见的复选框?

在许多情况下,您想要单击的复选框不可见,很遗憾,您无法单击该复选框。 您必须先启用它,然后才能实际单击它。 如果您不启用它,则会出现异常,例如“元素当前不可见,因此可能无法与之交互。”

可以使用Java脚本执行器启用它,以便Selenium可以单击它。 代码段如下:

((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;", checkbox);
  • 如何在Selenium Webdriver中进行鼠标悬停动作?

如果要将鼠标悬停在Web元素上,则可以使用Actions()类进行处理。 您可以依次使用函数moveToElemenet(),build()和perform()在Web元素上执行鼠标悬停操作。

Actions action = new Actions(driver);WebElement item = driver.findElement(By.xpath(""));action.moveToElement(item).moveToElement(driver.findElement(By.xpath("")) ).click().build().perform();
  • 如何在运行测试脚本之前删除Cookies?

有时在运行测试脚本之前清除所有cookie是非常重要的。 您可以使用driver.manage()的DeleteAllCookies方法方法。

代码片段如下:

this.driver.Manage()。Cookies.DeleteAllCookies();

另外,如果您有一个具有特定名称的Cookie,则可以使用以下方法将其删除:manage()类的DeleteCookiesNames。

this.driver.Manage()。Cookies.DeleteCookieNamed(“ CookieName”);

  • 如何在测试脚本中最大化窗口?

有时,您需要以全窗口大小和分辨率测试脚本。 您可以通过使用驱动程序实例的manage()方法轻松完成此操作。 然后,您可以使用window()方法,然后使用maximum()方法将窗口放大到最大大小。

代码段如下:

public void MaximizeWindow(){this.driver.get(“");this.driver.Manage().Window().Maximize();}

因此,有一些重要的技巧可以帮助您进行Selenium测试。 如果您牢记这些,则可以在“自动化测试”中编写脚本时解决大部分问题。 因此,使用它们可以节省您的时间。 祝一切顺利!!

翻译自: https://www.javacodegeeks.com/2019/09/selenium-scripting-tips-tricks.html

selenium编写脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

div和div之间画横线_HTML如何在两个div标签中间画一条竖线

近日在画一个界面的时候&#xff0c;遇到一个需求&#xff1a;在界面当中画一条竖线&#xff0c;且这条竖线在高度上需要自动占满整个父div(即这条竖线的高度和两个div中较高的一个等高)。往常我们画一条横线直接用标签即可&#xff0c;当画一条竖线的时候发现找不到标签。在网…

静态类型/静态分派/动态分派/单分派/多分派

文章目录静态类型/实际类型方法解析静态分派动态单分派参考静态类型/实际类型 Human woman new Woman(); // Human就是静态类型&#xff0c;其实就是变量编译时类型&#xff0c;Woman就是实际类型 Man man new Man(); // 静态类型和实际类型都是Man方法解析 Class 文件的编…

jvm回收垃圾_没有垃圾回收的JVM

jvm回收垃圾JVM社区不断增加新的GC&#xff0c;最近又添加了一个新的GC&#xff0c;它被称为Epsilon &#xff0c;是非常特殊的一个。 Epsilon仅分配内存&#xff0c;但不会回收任何内存。 看起来好像不执行任何垃圾回收的GC用途是什么。 这种类型的垃圾收集器有特殊用途&…

C打印函数printf的一种实现原理简要分析

【0】README 0.1&#xff09;本文旨在对 printf 的 某一种 实现 原理进行分析&#xff0c;做了解之用&#xff1b;0.2&#xff09; vsprintf 和 printf.c 的源码&#xff0c;参见 https://github.com/pacosonTang/dataStructure-algorithmAnalysis/tree/master/p309 【1】pr…

wireshark提取流量包中的文件_[技术]Wireshark抓取的数据包提取文件

0x00 简介本期主要会教大家如何从流量中还原出来文件。下面我将会用多种办法来讲解。使用系统&#xff1a;Kali Linux0x01 tcpxtract工具网络流量提取文件(方法1)Kali Linux默认没有安装该工具&#xff0c;需要自己安装安装命令&#xff1a;sudo apt install tcpxtract使用方法…

java设计模式适配器模式_Java中的适配器设计模式

java设计模式适配器模式适配器设计模式是一种结构设计模式 &#xff0c;可以帮助我们连接到通过不同接口公开相似功能的旧版或第三方代码。 适配器的现实世界是我们用来将USB电缆连接到以太网端口的类比。 在设计一个面向对象的应用程序时&#xff0c;当我们的客户期望一个特…

技术路线的选择重要但不具有决定性

微软在技术上连续大动作&#xff0c;如果放在几年前&#xff0c;我相信微软粉丝们一定是欢声雷动&#xff0c;不过这次情况有点不太一样&#xff0c;在网上看到有人在抱怨微软技术更新速度太快而且四面出击&#xff0c;还有人扬言要改弦更张&#xff0c;投奔Linux或者Java阵营。…

nproc是什么意思_top/htop内容的含义

uptimeuptime命令显示了load avg&#xff0c;它其实是读取的/proc/uptime文件&#xff1a;/proc/uptime 文件cat /proc/uptime9592411.58 9566042.33第一个是系统启动了多久(单位s)&#xff0c;第二个意思是系统启动以来&#xff0c;cpu idle花费的时间(单位s)。多核机器上&…

进程间通信(IPC)+进程加锁解锁

【0】README 0.1&#xff09; source code and text description are from orange’s implemention of a os&#xff1b;0.2&#xff09; for complete code , please visit https://github.com/pacosonTang/Orange-s-OS/tree/master/ipc_8 【1】看看&#xff0c;我们的进程代…

QA与测试到底有什么区别?

文章目录引言QA与测试的区别&#xff1f;QA、QC、QM的关系与区别&#xff1f;QA工作内容与职责引言 近期微信公众号后台有同学留言问&#xff1a; QA与测试的区别&#xff1f; QA、QC、QM的区别&#xff1f;以及QA的工作内容与职责。 针对这些问题我查阅了一些资料然后结合自…

java 进程运行时间_将Java类作为子进程运行

java 进程运行时间我本周需要将Java类&#xff08;而不是jar&#xff09;作为子进程运行。 更确切地说&#xff0c;我想从测试内部产生一个新进程&#xff0c;而不是直接在测试内部&#xff08;进程内&#xff09;运行它。 我不认为这是幻想或复杂的事情。 但是&#xff0c;这不…

划分vlan实验心得体会_思科:相同vlan,不同交换机之间的通信

实验拓扑如下&#xff1a;VPC 26 IP 23.1.1.3 24 VLAN20VPC 25 IP 12.1.1.2 24 VLAN10VPC1 IP 12.1.1.1 24 VLAN10VPC2 IP 23.1.1.2 24 VLAN20IOL交换机命名为SW1 先配置SW1的vlan10 和20检查SW1的vlan信息配置SW1的vlan10 和20检查SW2的vlan信息下一步将SW1和SW2连接的接口改为…

如何通过W3school学习JS/如何使用W3school的JS参考手册

文章目录学习JS对象DOM 对象HTML 对象JS 的常规类型教程学习 jQuery学习平台&#xff1a; W3school类似的学习平台&#xff1a; 菜鸟教程学习JS对象 DOM 对象 HTML 对象 JS 的常规类型 教程 学习 jQuery

快速选择

【0】README 0.1&#xff09;设有一组N 个数而要确定其中第k 个最小&#xff08;大&#xff09;者&#xff0c;我们称之为选择问题&#xff1b; 选择问题的解法&#xff1f;” 解法即为 快速选择算法&#xff1b; 0.2&#xff09; 快速选择是对 快速排序 改造而来&#xff0…

java模板方法模式_Java中的模板方法模式

java模板方法模式模板方法模式是一种行为模式&#xff0c;建议在超类中更一般地定义算法。 该算法是在称为模板方法的方法中定义的。 子类仅定义更具体的算法步骤的实现。 使用这种设计模式的好处是&#xff0c;算法后面的任何更改只会影响超类中的代码。 此外&#xff0c;它还…

hive 索爱_达内大数据云计算

第一阶段(Java基础)Java语言的高级特性静态导入、自动封箱拆箱、可变参数、增强for、枚举、类加载器、反射、内省、泛型、注解、动态代理回掌握Java语言的高级特性Java多线程多线程加强、线程池、Thread Local掌握Java线程池技术&#xff0c;掌握线程的Join、notify、notifyAll…

建立文件系统

【0】README 0.1&#xff09; source code and text description are from orange’s implemention of a os and for complete code, please visit https://github.com/pacosonTang/Orange-s-OS/blob/master/orange_s_fs.tar&#xff1b; 0.2&#xff09; 此文件系统涉及到的…

判断字符串是否为空

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>检查指定的值是不是空字符串</title><script>function test_1() {// var name document.getElementById("name").value;// ale…

java策略设计模式_Java中的策略设计模式

java策略设计模式策略设计模式是一种行为模式&#xff0c;其中我们有多种算法/策略来完成一项任务&#xff0c;所使用的算法/策略留给客户选择。 各种算法选项封装在单独的类中。 在本教程中&#xff0c;我们将学习在Java中实现策略设计模式。 UML表示形式&#xff1a; 首先&…

随机森林算法 python_Python实现的随机森林算法与简单总结

本文实例讲述了Python实现的随机森林算法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;随机森林是数据挖掘中非常常用的分类预测算法&#xff0c;以分类或回归的决策树为基分类器。算法的一些基本要点&#xff1a;*对大小为m的数据集进行样本量同样为m的有放回抽样&…