当前位置: 首页 > 知识库问答 >
问题:

Selenium isDisplayed()返回NoTouchElementException,但我预期为false

宦子琪
2023-03-14

当我的代码运行并且元素存在时,它eleExists被设置为true,但当它不存在而不是设置为false时,我会得到一个NoSuchElementException。我想知道这是否是硒中的一种细菌?

try{

    boolean eleExists = driver.findElement(By.cssSelector("Element cssSelector")).isDisplayed();
    if(eleExists)
    {
             // do stuff
    }
    else{
            // do other stuff
    }

}catch (Exception e) {
    System.out.println(e);
}

问题是:Selenium Webdriver-在If语句中使用isDisplayed()不起作用

解决方案是将代码包装在一个try-catch中,我已经完成了,现在正在运行。但我很想知道这种行为是不是有意的。

共有1个答案

东方和志
2023-03-14

Web元素可以有多种状态。发生这种情况的原因是一个元素可以在页面上,也可以不在页面上,也可以不可见或启用。处理这个问题的一个好方法是通过selenium等待。

一些引人注目的web元素状态包括:

存在:-元素位于DOM上,但我们不能说它是启用的还是可见的。

可见:-元素在DOM上可见,但我们不能说它是否启用(例如,如果它是一个按钮,则不可能单击它)。

可单击或启用:-元素完全可操作

这是一个使用等待与元素交互的代码示例。

...
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
...
selector = (By.TAG_NAME, 'body')

# this returns the element as driver.find_element()
element = WebDriverWait(driver, timeout).until(EC.element_to_be_clickable(selector))

element.click()
 类似资料:
  • 我正在使用JUnit和Mockito库来测试我的应用程序。问题是,当我在代码下面执行时,值在运行时没有返回空列表,并且测试失败。理想情况下,当get执行时,它应该返回空列表 我热切期待着支持。有没有人能帮我一下,如何通过这个测试用例???。如何通过Mockito使第8行的控件通过测试用例??? 请假设,下面两个类没有真实的代码,我们只有二进制文件作为JAR文件,我们不能修改下面的代码....我附上

  • 我的Retrofit2调用出现以下异常: 学分类别:

  • 问题内容: 我在尝试将JSON解组到对象中时遇到GSON错误。错误( 应为BEGIN_OBJECT,但在第3行第22列处为STRING )指向下面输入的第3行。 我是否相对于Bean正确映射了JSON? 我输入的JSON看起来是这样的: 问题答案: 不,您没有正确映射它,因为您的json对象不是,它包含。 你可以创建一个类只是为了封装你,但它是清洁反序列化容器的使用 然后使用解析有趣的内容 并且我

  • 问题内容: 我在列表中仅收到一个项目时收到此错误。我在服务器端REST Web服务中使用Jersey,当List返回一个元素并且当我得到它时,我仅收到错误,但是当它包含多个元素时,它可以正常工作,这就是我的工作方式它: 为什么Jersey不发送包含一个项目的列表?这是球衣的虫子吗?有没有办法使它始终序列化为数组? 当Web服务返回0元素时,这是我的JSON数据: 当Web服务返回1元素时,这是我的

  • 我试图使用gson解析下面的json字符串,并且我得到了这个异常。 异常很明显,它期待一个对象(可能是Datapoint),但它遇到了一个数组。我确信是我的模型类导致了这个问题,但是我不明白我的模型类应该是什么样子才能解析json而不会失败。

  • 我正面临一个关于GSON json到Java的问题。我在这里查了很多帖子,但我找不到我的问题的解决方案。所以我在这里列出我的问题。谢谢! 以下是我的Json数据 非常非常感谢!!