selenium driver.get 默认等待多久

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium driver.get 默认等待多久相关的知识,希望对你有一定的参考价值。

默认是无限等待的,我试过等了半个小时都没反应。
在driver.get()前可以设置等待时间。
例如driver.set_page_load_timeout(5)
参考技术A 显式等待是,先于代码的继续执行,而定义的等待某个条件发生的代码。最糟糕的情况是Thread.sleep(),设置条件为一个需要等待的精确时间段。有一些提供的便利方法,可以帮助你编写代码仅仅等待需要的时间。

Selenium_等待页面加载完毕

 

隐式等待

     WebDriver driver = new FirefoxDriver();
        driver.get("www.baidu.com");    
        
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        WebElement element = driver.findElement(By.cssSelector(".abc"));      
        ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);  

注:隐式等待设置的内容在driver的整个生命周期都有效,所以实际使用过程当中有弊端。

  等待20秒元素还不存在,就会抛出异常  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("www.baidu.com");    
        
        WebDriverWait wait = new WebDriverWait(driver, 20);
        wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".abc")));
        WebElement element = driver.findElement(By.cssSelector(".abc"));      
        ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);  
    }

 

以上是关于selenium driver.get 默认等待多久的主要内容,如果未能解决你的问题,请参考以下文章

爬虫之selenium和webdriver—基础:操作cookie和显式等待与隐式等待

python+selenium六:隐式等待

python爬虫selenium的三种等待

selenium 多窗口切换

python+Selenium第一个脚本

Python+Selenium登录