在用 driver.findElement() 方法捕获控件时,会由于页面加载比较慢或是响应比较慢,会引起捕获超时,导致脚本报没有该控件的异常。 我现在的做法是用下面的代码加长超时等待时间, driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
不知道大家有没有更好 更合理的方法,来处理这个问题。
写个超时等待函数呗,和网页测试时候的 waitforcondition 一样
selenium 自己的 WebDriverWait 怎么样
同 2 楼。
System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver dr = new FirefoxDriver(); String url = "file:///C:/Documents and Settings/gongjf/桌面/selenium_test/Wait.html";// "/Your/Path/to/Wait.html" dr.get(url); WebDriverWait wait = new WebDriverWait(dr,10); wait.until(new ExpectedCondition<WebElement>(){ @Override public WebElement apply(WebDriver d) { return d.findElement(By.id("b")); }}).click(); WebElement element = dr.findElement(By.cssSelector(".red_box")); ((JavascriptExecutor)dr).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
我从网上找的
我举得这个完全没有用,我通常的做法是 Thread.sleep() 一下, 具体睡多久自己掂量 很管用 哈哈哈
from selenium.webdriver.support.wait import WebDriverWait def waitForName(driver, name, msg, timeout = 15): return WebDriverWait(driver,timeout).until(lambda driver: driver.find_element_by_name(name).is_displayed(), msg)