package javaBase; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.webdriverwait; import java.util.concurrent.TimeUnit; /** * java selenium 页面加载 * 我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作。 否则页面上的元素不存在,会抛出异常。 * * 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操作 * * selenium 中提供了非常简单,智能的方法,来判断元素是否存在. * * 实例:html * 点击click 按钮5秒后, 页面上会出现一个红色的div快, 我们需要写一段自动化脚本智能的去判断这个div是否存在, 然后把这个div 然后高亮。 */ public class TestSetSeleniumServerJAR { public static void main(String[] args) { //谷歌浏览器 WebDriver driver = new ChromeDriver(); /** * 隐式等待 */ /* driver.get("http://localhost:8888/Selenium/"); / //总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常 org.openqa.selenium.NoSuchElementException 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); */ /** * 显式等待 * * 显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断。 * * 显式等待可以自定义等待的条件,用于更加复杂的页面等待条件 * */ driver.get("http://localhost:8888/Selenium/"); /** *只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑 * * 如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。 */ 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); /** * 等待的条件 * * 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) */ } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。