本文目录一览ˇ﹏ˇ自动化测试:Selenium高级操作本章主要内容:
切换到适当的上下文:
使用JS弹出框
切换框架
调整大小浏览器窗口
调整JS弹出框大小
JavaScript,又称JS,应用于HTML网页,通过操作网页窗口和网页来实现动态效果。 元素。
JS弹窗类型:警报框警报、确认框验证、问题框提示
如果浏览器窗口中有JavaScript弹窗,则应该存在。 通过switch_to语句执行。
相关方法:
切换到窗口
当浏览器中有多个窗口时,需要调用切换到另一个窗口操作。 切换到目标窗口:
相关方法:
例如:
Switch_frame
如果元素是HTML中,则在框架或iframe,无法直接找到该元素。 在进行放置和其他任务之前,您需要先更改框架。
相关方法:
一般我们可以使用WebElement的方法来与页面进行点击等操作。 但有时我们需要一些复杂的动作,所以我们需要使用我们的动作链。
类似鼠标操作,具有双击、右键、拖动、悬停等功能。
标准按键:
常用按键:
未命名键:a-z,0-9
修饰键:
修饰键单独使用时无意义,一般使用。 与其他键结合使用。
操作步骤:
使用示例
输入大写字母或按键上方的字母:
JS,JavaScript的缩写,应用广泛用于HTML网页中,通过控制网页的窗口和网页的元素来创建动态效果。
Web驱动无法完成的工作可以通过JS来完成。
示例:
参考JS:
获取标题:document.title
弹出提示框:alert('I'm)bombbox');
更改元素属性:q=document.getElementById('kw');q.style.display='block';
selenium-js滚动条
通过js实现拖动滚动条的效果:
将元素移动到窗口顶部:
将元素移动到窗口底部:
指定窗口移动距离:
将窗口移动到某个位置:
InputLabel:借用要应用的输入元素的发送方法
示例:-
卸载帐户---借用autoIt等其他工具:
•用于WindowsGUI自动化任务
•有了它,可以组合使用自定义击键、鼠标移动和窗口/控制器操作来实现自动化任务。
•使用类似BASIC的脚本语言。
•您可以使用转换工具将脚本转换为exe文件
出于安全原因,应用程序在登录或某些操作节点时使用验证码。
验证码是一种官方的、全自动的程序,用于识别用户是计算机还是人类。
自动化时的验证码设置方法:
Cookie操作:
Selenium截图操作
快照:
>
![](https://img2.baidu.com/it/u=3000527039,3654106023&fm=253.jpg)
(`▽′)使用pycharm+selenium进行自动化测试中为什么会出现这种错误?使用Selenium时遇到的错误消息“javascripterror:a.tagName.toUpperCaseisnotafunction”是指执行JavaScript命令时出现问题。 此错误通常表明您尝试调用的JavaScript函数或属性不存在,或者上下文使用不正确。
此特定错误很可能是由于尝试调用非DOM元素的JavaScript对象上的tagName属性的toUpperCase()方法引起的。 tagName`是DOM元素的一个属性,它可以返回表示元素名称的字符串。 例如,对于
元素,tagName值为“DIV”。
此错误的可能原因:
1.元素引用不正确:您可以尝试在不是DOM元素的JavaScript对象上调用.tagName.toUpperCase()。
2.执行时间不正确:JavaScript代码可能会在DOM元素可用之前执行,这意味着未找到预期的元素。
3.脚本错误:传递给execute_script()或execute_async_script()`的JavaScript代码中有错误。
要解决这个问题,可以采取以下步骤:
-验证元素是存在:在调用.tagName.toUpperCase()之前确保该元素确实存在并且是一个DOM元素。
-检查代码:检查传递给Seleniumexecute_script()方法的JavaScript代码,以确保使用正确的元素引用。
-调试输出:在执行.tagName之前添加一些调试输出,例如console.log(a),以检查对象a是否是预期的DOM元素。
-等待元素:使用Selenium的等待条件来确保元素在执行JavaScript之前已加载并可见。
![](https://img2.baidu.com/it/u=3284095752,2563750649&fm=253.jpg)
ˇ▽ˇ如何利用selenium来进行自动化页面测试这既是一个测试主题,也是一个开发主题。 如今的Web应用程序不可避免地需要自动化页面测试,因此Selenium是一个不错的选择。 Selenium是一个自动化测试框架,具有IDE和API接口,可以应用于Java、C#、Python和Ruby等语言。 使用Selenium构建自动化测试程序非常简单。 但首先,您应该熟悉Web应用程序中请求和响应的概念以及如何使用XPath。 这里我将介绍如何使用Junit和Selenium实现自动化页面测试。
1、下载需要的依赖文件selenium-server-standalone-2.25.0.jar、junit-4.7.jar,放到你项目的lib文件夹下(这里我们使用Firefox浏览器作为客户端,所以需要额外的浏览器启动器无需下载。
2.创建一个测试项目,并将以下代码添加到项目中:
importcom.thoughtworks.selenium;
importjunit.framework.TestCase;
★importorg.junit.After;
★importorg.junit.Before;
★importorg.junit.Test;
★importorg.junit.runner.RunWith;
★importorg.junit.runners.BlockJUnit4ClassRunner;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebDriverBackedSelenium;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.firefox.FirefoxDriver;
导入org.openqa.selenium.internal.WrapsDriver;
导入org.openqa.selenium.support.ui等等;
导入org.openqa.selenium.support.ui.WebDriverWait;
导入java.io.IOException;导入静态org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;
<@RunWith(BlockJUnit4ClassRunner.class)
<@Before
publicvoidcreateAndStartService()throwsIOException{
selenium=newWebDriverBackedSelenium(newFirefoxDriver(),"");
driver=((WrapsDriver)selenium).getWrappedDriver();
<@After
<@Test
publicvoidshould_open_google_page()throwsInterruptedException{
driver.get("https://www.google.com.hk");
WebElementsearchBox=driver.findElement(By.xpath("//*[@id=\"lst-ib\"]"));
SearchBox.sendKeys("selenium");
WebElementsearchButton=driver.findElement(By.xpath("//*[@id=\"tsf\"]/div[2]/div[3]/center/input[1]"));
SearchButton.click();
等待wait=newWebDriverWait(driver,30);
<3.如果运行此测试,被展示。 Firebox浏览器将自动启动,Selenum将自动输入和搜索。
这样就完成了一个简单的自动化页面测试。 有的朋友可能不明白这段代码的含义。 我简单解释一下上面代码中的红色和蓝色部分。 Selenium通过包装浏览器来处理页面,因此它首先创建一个与浏览器关联的WebDriver对象。 然后我们需要使用findeElement方法和XPath获取页面对象(代码红色部分)来查找页面元素。 因此,其中一个单击操作通常需要一些时间才能生成服务器响应。 蓝色部分的代码可以使用XPath来判断返回后加载的是哪个页面元素。 同时,等待对象也被认为超时。 防止服务器返回或引发错误。 您仍然可以结束测试。 如何更快地确定页面元素的XPath? ![](https://img0.baidu.com/it/u=1929925097,4290544348&fm=253.jpg)