Selenium2 入门[3] —— 等待页面加载完毕

  
  
package was.common.utility;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.google.common.base.Function;
 
 
public class CommonTasks {
WebDriver driver;
/**
* This method is for waiting until page is ready
* if document.readyState = complete?
*
* @param driver
*/
public static void waitForPageLoad(WebDriver driver){
Function<WebDriver,Boolean> waitFn = new Function<WebDriver,Boolean>(){
@Override
public Boolean apply(WebDriver driver){
return ((JavascriptExecutor)driver).executeScript("return document.readyState")
                            .equals("complete");
}
};
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(waitFn);
}
 
}

调用:
   
   
WebDriver dirver = new FirefoxDriver();
CommonTasks.waitForPageLoad(dirver);
好的,我知道了。针对你的问题,下面是三种设置元素等待的方法: 1. 强制等待:使用 time 模块的 sleep 函数,强制等待指定的时间,等待页面加载完毕,然后再进行后续操作。这种方法最简单,但是不够灵活,会浪费时间。 示例代码: ```python import time driver.get('http://www.example.com') time.sleep(5) # 等待5秒钟 ``` 2. 隐式等待:使用 driver.implicitly_wait() 方法,设置一个最长等待时间,在这个时间内如果页面加载完毕,就开始执行后续操作;如果超时还未加载完成,则抛出异常。 示例代码: ```python driver.implicitly_wait(10) # 设置最长等待时间为10秒钟 driver.get('http://www.example.com') # 加载页面 element = driver.find_element_by_xpath('//input[@name="username"]') # 查找元素 ``` 3. 显式等待:使用 WebDriverWait 类,指定一个最长等待时间,并根据指定的条件判断是否加载完毕,如果条件成立就开始执行后续操作;如果超时还未成立,则抛出异常。 示例代码: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver.get('http://www.example.com') # 加载页面 element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//input[@name="username"]'))) # 等待元素加载完毕 ``` 这三种方法都可以等待页面加载完毕,只是使用方式略有不同。根据实际情况选择合适的方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值