Java使用自动化测试脚本selenium
记录几个Java使用自动化测试脚本selenium的问题查找元素(by)cssselectorxpath其他比较简单的tagNameidclassNamename赋值获取查找元素(by)cssselector通过使用标签的名称和属性(id,class)xpath通过正则表达式查找,用于多个同元素定位 .注意所有的属性名称都用@符号标志例子:<html><body><f
记录几个Java使用自动化测试脚本selenium的问题
查找元素(by)
cssselector
通过使用标签的名称和属性(id,class)
xpath
通过正则表达式查找,用于多个同元素定位 .注意所有的属性名称都用@符号标志 例子:
<html>
<body>
<form id="loginForm">
<input name="username" type="text" />
<input name="password" type="password" />
<input name="continue" type="submit" value="Login" />
<input name="continue" type="button" value="Clear" />
</form>
</body>
<html>
login_form = driver.findElement(By.xpath("/html/body/form[1]"))
login_form = driver.findElement(By.xpath("//form[@id='loginForm']"))
login_form = driver.findElement(By.xpath("//form[@id='loginForm']/input[2]")) //通过索引拿到指定的标签对象
其他比较简单的
By.tagName
标签名称 比如input ,li ,button
By.id
标签的id属性
By.className
标签的class属性
By.name
标签的name 一般是表单中input,select标签
赋值
- 输入框赋值基本为sendkeys()方法.如果type为file,该方法的值为文件路径.
- 下拉选择框赋值需要将Webelement对象转为Select对象,然后使用其内置方法进行赋值
WebElement ele=driver.findElement(By.id("mytag"));
// 实例化select方法
Select select_ele=new Select(ele);
// 通过select索引定位选择下拉框元素,注意索引从0开始
select_ele.selectByIndex(1);
Thread.sleep(1000);
// 通过select的value定位选择下拉框元素
select_ele.selectByValue("03");
Thread.sleep(1000);
// 通过select的文本内容定位选择下拉框元素
select_ele.selectByVisibleText("白居易");
获取
<html>
<body>
<p>Are you sure you want to do this?</p>
<a href="continue.html">Continue</a>
<a href="cancel.html">Cancel</a>
</body>
<html>
-
如果是标签中的文字,直接用webelement.getText();
-
是属性值 webelement.getAttribute(‘属性名’);
注: 获取一般的value属性值是需要用到getAttribute(‘value’); -
获取下拉框选择的值:现将WebElement对象转换为Select对象,然后使用方法:
select.getFirstSelectedOption().getText();
iframe元素
有些情况是iframe下的元素,所以我们需要先定位到iframe,然后才能找到其下方的元素:
可通过name或id、索引、webelement对象切换至iframe
代码 driver.switchTo().frame(xxx);
其构造方法如下
*补充一点:*同级的iframe不知道如何切换,现在用的方法就是先退出iframe再进入其他的iframe
driver.switchTo().defaultContent(); // 退出iframe
shadowRoot
作为html里的组件渲染–shadowRoot,在selenium中是无法直接定位的.
我们需要先用执行js的方式找到该元素并返回,就可以操作了(当然也可以直接执行js来做相应的操作)
String js = "";
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript(js);
有返回值:
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
WebElement webElement = (WebElement) javascriptExecutor.executeScript(js);
更多推荐
所有评论(0)