|
实例要求
实例:set_timeout.html 下面的html 代码, 点击click 按钮5秒后, 页面上会出现一个红色的div快, 我们需
要写一段自动化脚本智能的去判断这个div是否存在, 然后把这个div 然后高亮。
复制代码
- <html>
- <head>
- <title>Set Timeout</title>
- <style>
- .red_box {background-color: red; width = 20%; height: 100px; border: none;}
- </style>
- <script>
- function show_div(){
- setTimeout("create_div()", 5000);
- }
-
- function create_div(){
- d = document.createElement('div');
- d.className = "red_box";
- document.body.appendChild(d);
- }
- </script>
- </head>
- <body>
- <button id = "b" onclick = "show_div()">click</button>
- </body>
- </html>
复制代码
复制代码
隐式等待
- WebDriver driver = new FirefoxDriver();
- driver.get("file:///C:/Users/Tank/Desktop/set_timeout.html");
-
- driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
- WebElement element = driver.findElement(By.cssSelector(".red_box"));
- ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
- 其中
复制代码
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
意思是, 总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常 org.openqa.selenium.NoSuchElementException
显式等待
显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断。
显式等待可以自定义等待的条件,用于更加复杂的页面等待条件
-
- 等待的条件
- WebDriver方法
- 页面元素是否在页面上可用和可被单击
- elementToBeClickable(By locator)
- 页面元素处于被选中状态
- elementToBeSelected(WebElement element)
- 页面元素在页面中存在
- presenceOfElementLocated(By locator)
- 在页面元素中是否包含特定的文本
- textToBePresentInElement(By locator)
- 页面元素值
- textToBePresentInElementValue(By locator, java.lang.String text)
- 标题 (title)
- titleContains(java.lang.String title)
复制代码
只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑
如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。
复制代码
- public static void testWait2(WebDriver driver)
- {
- driver.get("E:\\StashFolder\\huoli_28@hotmail.com\\Stash\\Tank-MoneyProject\\浦东软件园培训中心\\我的教材\\Selenium Webdriver\\set_timeout.html");
-
- WebDriverWait wait = new WebDriverWait(driver, 20);
- wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".red_box")));
- WebElement element = driver.findElement(By.cssSelector(".red_box"));
- ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
- }
复制代码
复制代码
|
|