[selenium webdriver Java]常用api

时间:2023-03-09 08:37:04
[selenium webdriver Java]常用api

1. 获取元素文本

WebElement类的getText()方法返回元素的innerText属性。所以元素里如果有子节点一样也会被返回出来。如下所示

 public class GetText {
@Test
public void testGetText(){
//启动driver,打开被测页面
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://map.baidu.com"); //等待一段时间,使得页面加载完成,避免出现无法找到元素的问题
try{
Thread.sleep(2000);
}catch(Exception e){ } //取得元素
WebElement message = driver.findElement(By.className("open-map")); //获得元素文本
String messageText = message.getText(); //验证文本为“查看短租、求职、订餐、天气等更多专题地图 >>”
Assert.assertEquals(messageText, "查看短租、求职、订餐、天气等更多专题地图 >>"); //可使用java string api方法进行部分匹配
Assert.assertTrue(messageText.contains("求职"));
Assert.assertTrue(messageText.startsWith("查看短租"));
Assert.assertTrue(messageText.endsWith(">>")); //关闭driver
driver.quit();
}
}

代码示例

[selenium webdriver Java]常用api

2. 获取元素属性值

WebElement类的getAttribute()返回元素的属性值

3. 获取元素的css属性值

WebElement类的getCSSvalue()方法将返回元素的样式属性值

4. 在元素上执行鼠标双击

Actions类的doubleClick()方法

5. 执行JavaScript代码

JavascriptExecutor接口,可以任意执行JavaScript代码,尤其适用于一些Selenium WebDriver目前不支持的操作

((JavascriptExecutor) driver).executeScript(script);

6. 浏览器窗口最大化

driver.manage().window().maximize();

7. 处理windows进程

selenium WebDriver java 提供了windowsUtils类来和Windows系统交互。在测试开始时,我们需要关掉一些已经存在的进程。

 public class KillWindows {

     @Test
public void test(){ //关闭ie浏览器进程
WindowsUtils.tryToKillByName("iexplore.exe"); System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com"); driver.quit();
}
}

示例代码

我们可以使用tryToKillByName方法来关闭任何的windows进程。

如果这个进程不存在则会抛出一个异常,但是,测试还是会正常的执行下去

8. 阅读/修改windows注册表中的值

WindowsUtils类提供了多种方法和windows操作系统的注册表进行交互。如果测试是运行在windows操作系统上的IE浏览器,则可能需要修改一些IE注册表里的设置。使用WindowsUtils类可以很方便的解决这个问题。

根据不同的返回值数据类型,可选择以下几种方法:

readStringRegistryValue()

readIntergerRegistryValue()

readBooleanRegistryValue()

修改:

writeStringRegistryValue()

writeIntergerRegistryValue()

writeBooleanRegistryValue()