服务热线
131-1198-7613
上海鲁德软件测试培训https://www.testroad.org/ 软件测试进修
一、Selenium的Java编程底子语法
在Selenium的底子语法中首先是须要定位到页面元素的,Selenium通过找寻到界面元素然后触发响应的时间,通过页面元素厘革鉴定是否实施了响应的利用。
可以通过页面元素的属性获取响应的页面元素。
1.通过Identifier(id)定位元素
所给出的定位的HTML元素必需要有identifier,如果没有就会报告未找到响应元素的错误。通过ID来标识可以确定唯一性。
WebElement ele = By.id("idName");
只有当你大白知道元素的id属性,才气操纵。
2.通过Name定位元素
操纵id定位元素当然方面,可是id并不是html元素必需的,我们可以操纵Name定位元素位置。
操纵Name定位元素的位置,会匹配第一个与Name匹配的元素。如果页面中有多个类似的Name,可以操纵更多的筛选器进行元素筛选的细化。
WebElement ele = By.Name("name");
只有大白知道原属的那么,才气操纵。
3.通过Xpath定位元素
在一些情况下无法得知页面元素的id和name,还可以操纵xpath从已知节点最先定位响应的元素。
绝对路径进行定位 xpath=/html/body/form[1]
通过元素的响应属性定位例如xpath=//form[@id='loginForm'] 表示从根节点最先查找一个form元素她包含一个属性是id并且里面的值为loginForm
找到某一个元素下响应的子元素 xpath=//form[input/@name='username'] 找到Form表单下面的input元素并且该元素有一个属性name且该name的值是username。
找到第一个指定的元素 xpath=//input[@name='username'] 扎到第一个input元素里面有一个name属性并且该属性值为username
还可以操纵加倍细分的查找 xpath = //input[@name='continue'][@type='button'] 找到input标签,1.该标签有一个name=continue属性和type=button属性的元素。
4.通过连接定位元素
WebElement ele = By.LinkText("xxxx");
当知晓响应的链接类容就可以定位到响应的元素。
5.通过DOM元素定位元素
DOM元素是HTML的底子元素,并且只有dom定位可以直接通过document
dom=document.getElementById('loginForm')dom=document.forms['loginForm']dom=document.forms[0]document.forms[0].usernamedocument.forms[0].elements['username']document.forms[0].elements[0]document.forms[0].elements[3]
6.通过tagName,通过标签名称进行定位
ListWebElement eles = By.TagName("tagname");
在一个页面中类似的tag标签太多了,如果仅实用单个tagname查询会找到一个列表。
7.通过Css进行定位(Cascading Style Sheets)
css=form#loginFormcss=input[name="username"]css=input.required[type="text"]css=input.passfieldcss=#loginForm input[type="button"]css=#loginForm input:nth-child(2)
知晓了奈何定位元素,我们就可以触发页面上响应的BOM事故了。
二、Selenium错误现场保存方法(截屏和记载日志)
那么当实施页面响应的自动化利用的时间发生了错误我们应该奈何才气更好的记载响应的错误呢?记载Log日志和保存响应的屏幕错误信息。
1.首先记载log日志,可操纵为java量身定做的log4j进行日志记载(我的此外一篇Log4j奈何实现日志分模块,分天,分错误级别进行记载)
2.截取错误发生时的屏幕,这样就可以很快的定位错误发生前的利用和错误发生时的错误信息了。
分享一段实施截屏的java代码。
/*截屏利用,遇到错误自动截屏存储到指定位置。* 指定保存的路径,然后通过 TakesScreenshot 的 getScreenshotAs进行截屏利用。* WebElement 担当 TakesScreenshot 这个最大能耐焊好的基于了浏览器,返回当前的状况* ——整个当前的HTML元素内容* ——可视化部门的HTML元素* */public static void captureScreenshot(String arg0,WebDriver driver){if(PrivateDataSource.Debug){logger.debug("调试截图功能,并把截图存储到:"+PrivateDataSource.screenshotsResultsPath);}String screenshotsResultsPath=PrivateDataSource.screenshotsResultsPath;String imagePath = screenshotsResultsPath + File.separator+arg0+"_"+arg0+".png";File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);try {org.apache.commons.io.FileUtils.copyFile(screenShotFile, new File(imagePath));} catch (IOException e) {e.printStackTrace();if(PrivateDataSource.DebugError){logger.info( logger.getClass().getName()+" selenium输出截图功能失败。以下是错误信息!");logger.error(e.getStackTrace());}}}
三、Selenium浏览器兼容性测试
1.向浏览器注入一段可实施的Java剧本
在许多情况下我们须要程序触发一段Java剧本,首先我们须要注册响应的Java到浏览器中然后触发实施。
WebElement ele = driver.findElement(By.id("SubMenu7").xpath("//table/tbody/tr[9]"));//定位Web页面的元素 //((JavaExecutor)driver).execute("arguments[0].onclick=function(){alert('js has been execute!');}", ele);//为这个元素添加可实施的js ((JavaExecutor)driver).execute("arguments[0].onclick=function(){SelectMenu(this,'AirLineSeasonManage.aspx?TimeStamp=' + TimeStamp());}", ele);//为这个元素添加可实施的js ele.click();
然后向响应的元素里面注入一段可实施剧本以上代码首先找到响应的元素
最后点击该元素实施这个Java剧本。
2.IE浏览器运行寄望点
首先须要下载一个IEDriverServer.exe工具然后放置在尽情位置,记载响应的存放path
配置浏览器启动路径System.setProperty("webdriver.ie.driver", "存放IEDriverServer.exe的path");
启动程序最先实施
3.Chrome浏览器运行寄望点
首先须要下载一个chromedriver.exe模拟Chrome浏览器的工具,放在尽情位置,记载响应的存放path
配置浏览器启动路径System.setProperty("webdriver.chrome.driver", "存放chromedriver.exe的path");
启动程序最先实施
4.FireFox浏览器中运行寄望点
直接安装了FireFox浏览器,并且Selenium对FireFox有很是好的支撑,所以不须要下载此外的模拟器进行实施验证。
如果你的FireFox没有默认安装,即改变了默认的安装路径须要设定运行变量,不然FireFox不会被正常启动的。
System.setProperty("webdriver.firefox.bin", "FireFox的安装路径");
启动程序最先实施
(本文转载自收集.感谢原文作者)
2024-03-20
网页设计,是根据企业希望向浏览者传递的信息(包括产品、服务、理念、文化),进行网站功能策划,然后进行···
2024-03-19
网页设计,是根据企业希望向浏览者传递的信息(包括产品、服务、理念、文化),进行网站功能策划,然后进行···
2024-03-19
网页设计,是根据企业希望向浏览者传递的信息(包括产品、服务、理念、文化),进行网站功能策划,然后进行···
2024-03-19
网页设计,是根据企业希望向浏览者传递的信息(包括产品、服务、理念、文化),进行网站功能策划,然后进行···