Selenium 智能等待操作元素不正确

测试小书童 · 2017年05月15日 · 最后由 黑水 回复于 2017年05月17日 · 2702 次阅读

用例为:打开登录~输入用户名~输入密码~登录~点击右上角头像~检查点

无法点击上面的图像,xpath 元素为:/html/body/div[1]/nav/div/ul[1]/li

智能等待代码如下:

WebElement element = new WebDriverWait(driver, 10)
         .until(new ExpectedCondition<WebElement>() {
             @Override
             public WebElement apply(WebDriver d) {
                 try {
                     WebElement e = d.findElement(by);
                     return e;
                 } catch (TimeoutException e) {
                     System.out.println("元素找不到");
                     return null;
                 } catch (NoSuchElementException e) {
                     return null;
                 }
             }

         });
return element.isDisplayed();

如果查找成功就会执行点击操作,我打印日志的确执行了打印操作,但是界面上并没有执行点击,我用的 Thread.sleep(2000); 后,是可以正常点击

很奇怪一直执行不了,哪位知道是什么原因吗?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

有些代码的确功能没用

试下这三种:

Thread.sleep(2000);
WebElement element = driver.findElement(By.xpath(".//html/body/div[1]/nav/div/ul[1]/li/a"));
System.out.println("Location is: " + element.getLocation());
WebElement element = (new WebDriverWait(driver, 5))
        .until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//html/body/div[1]/nav/div/ul[1]/li/a")));
System.out.println("Location is: " + element.getLocation());
WebElement element = (new WebDriverWait(driver, 5))
        .until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//img[@alt='480']/parent::a")));
System.out.println("Location is: " + element.getLocation());
测试小书童 关闭了讨论 05月18日 13:42
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册