Appium 对于捕获控件超时时的异常处理

贝斯特 · 2014年04月12日 · 最后由 汪汪 回复于 2014年12月26日 · 2503 次阅读

在用 driver.findElement() 方法捕获控件时,会由于页面加载比较慢或是响应比较慢,会引起捕获超时,导致脚本报没有该控件的异常。
我现在的做法是用下面的代码加长超时等待时间,
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

不知道大家有没有更好 更合理的方法,来处理这个问题。

共收到 5 条回复 时间 点赞

写个超时等待函数呗,和网页测试时候的 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)

6楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册