|
2#
楼主 |
发表于 2017-7-12 17:06:09
|
只看该作者
查找结果:
HTML元素有时并不需明确声明,因为他们将默认为已知值的属性。例如,input标签,就不需要设置type为text,默认属性就是text,经验原则:WebDriver在使用中的XPath时,不应该期望能够对这些隐含属性相匹配。
使用javascript
您可以执行任意JavaScript找到一个元素,只要你返回一个DOM元素,它会自动转换到一个WebElement对象。
例子:
jQuery的页面加载一个简单的例子:
CODE:
- WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('.cheese')[0]");
复制代码 寻求所有的页面上的input元素:
CODE:
- List<WebElement> labels = driver.findElements(By.tagName("label"));
- List<WebElement> inputs = (List<WebElement>) ((JavascriptExecutor)driver).executeScript(
- "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +
- "inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels);
复制代码 用户表单填充
例子:
遍历select标签
CODE:
- WebElement select = driver.findElement(By.tagName("select"));
-
- List<WebElement> allOptions = select.findElements(By.tagName("option"));
-
- for (WebElement option : allOptions) {
-
- System.out.println(String.format("Value is: %s", option.getAttribute("value")));
-
- option.click();
-
- }
复制代码 选择某一个选项:
CODE:
- Select select = new Select(driver.findElement(By.tagName("select")));
-
- select.deselectAll();
-
- select.selectByVisibleText("Edam");
复制代码 上传文件:
CODE:
- WebElement FileUpload =driver.findElement(By.id("upload"));
-
- String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
-
- FileUpload.sendKeys(filePath);
复制代码 提交:
Submit在form中
CODE:
- driver.findElement(By.id("submit")).click();
复制代码 submit不在form中
CODE:
拖拽操作:
CODE:
- WebElement element = driver.findElement(By.name("source"));
- WebElement target = driver.findElement(By.name("target"));
- (new Actions(driver)).dragAndDrop(element, target).perform();
复制代码 Windows和Frames之间的切换
一些web应用程序有许多Frames或多个Windows。 WebDriver支持使用“switchTo”的方法实现的窗口之间切换。
CODE:
- driver.switchTo().window("windowName");
复制代码 所有对driver的调用都会指向特定的窗口,但是我们怎么知道窗口的名字呢?我们可以查看javascript代码和打开他的链接:
CODE:
- <a href="somewhere.html" target="windowName">Click here to open a new window</a>
复制代码 另外,还可以通过“window handle”去调用“switchTo().window()”,通过这个,我们就遍历来找到所有打开的窗口:
CODE:
- for (String handle : driver.getWindowHandles()) {
- driver.switchTo().window(handle);
- }
复制代码 Switch同样支持frame:
CODE:
- driver.switchTo().frame("frameName");
复制代码 同样可以使用他访问subframe,找frameName的第一个subframe中叫做child的frame:
CODE:
- driver.switchTo().frame("frameName.0.child");
复制代码 弹出框:
从selenium2.0开始,已经支持对弹出框的获取
CODE:
- Alert alert = driver.switchTo().alert();
复制代码 这个方法会返回当前被打开打警告框,你可以进行统一,取消,读取提示内容,后则进入到提示,这个同样使用alerts,confirms,prompts。
Navigation:History and Location
之前我们就可以通过get方法来打开一个网页,像我们所看到的,WebDriver同样还有许多小接口,Navigation就是其中一个小接口:
CODE:
- driver.navigate().to("http://www.example.com");
- navigate().to和get()其实作用是一样的,但是navigate还可以进行浏览器的前进后退操作
复制代码
CODE:
- driver.navigate().forward();
- driver.navigate().back();
复制代码
|
|