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

如果使用FindBy注释,Selenium检查元素是否存在

龙俊良
2023-03-14

在尝试使用@findby注释时,我的感觉是没有完美的方法来检查元素的存在。

@FindBy (id = "abc")
private WebElement TestElement;

if (TestElement.isPresent) {...};

对我来说,使用页面对象的经典By定义(例如private By searchInput=By.xpath(“\\input[@class='input_search']”);)比使用@findby更灵活。使用@findby,我总是处理WebElement本身,之前没有机会检查是否存在,对吗?

使用@findby检查页面对象上下文中元素的DOM存在的最佳pratice解决方案是什么?还是为了安全起见,我应该按继续使用


共有1个答案

金旺
2023-03-14

这可能不是最好的解决方案,但您可以使用findBy并返回一个列表:

List<WebElement> TestElement = driver.findElements(By.id(...));

并且每次检查列表elelement的大小(在while循环中),看看它是否为空。

 类似资料:
  • 问题内容: 我想检查Selenium中是否存在一个元素,如果存在,请将其分配给一个名称。 现在,我有这样的东西: 但是,当不存在值为9的元素时,它将返回错误。有没有一种方法可以检查它是否存在,或者类似的东西? 问题答案: 有几种选择。我推荐这些。 1.创建方法或Web驱动程序扩展。 2.计算元素,如果有1个或更多元素,则获取它。 那你可以检查

  • 问题内容: 我有一个问题-我正在使用Selenium(firefox)Web驱动程序打开网页,单击一些链接等,然后捕获屏幕截图。 我的脚本可以从CLI正常运行,但是通过cronjob运行时,它并没有通过第一个find_element()测试。我需要添加一些调试,或一些帮助我弄清为什么失败的东西。 基本上,我必须先单击“登录”锚点,然后才能进入登录页面。元素的构造为: 我正在通过LINK_TEXT方

  • 问题内容: 我正在尝试通过查找元素 在Python中,selenium并不总是存在。是否有一条快速的线检查它是否存在,并在不存在时显示NULL或FALSE代替错误消息? 问题答案: 您可以按以下方式实现/ 阻止以检查元素是否存在: 或使用其中一种方法进行检查。它应该返回空列表或与传递的选择器匹配的元素列表,但如果没有找到元素,也不例外:

  • 问题内容: 我试图在执行此行之前检查元素是否存在: 如果id 在文档中不存在,甚至在-block中,都会引发错误“ no such element” 。我找到了Java的答案,您可以在其中检查大小是否为0,但是在node-js中,这会在我检查大小之前引发错误。 问题答案: 您可以利用的可选错误处理程序参数。 我在文档中找不到明确声明的内容,但是通过模块源代码中的函数定义确定了这一点:

  • 我正在尝试将我的selenium测试转换为使用页面对象模型(以及扩展为@FindBy)。我有几个这样的对象定义: 将父对象转换为使用FindBy很容易: 基本上,如果可能的话,我想这样做(我知道这不是真正的代码,这只是一个伪示例: 但是,有没有一种方法可以使用FindBy在父元素中定位子元素呢 。我需要这样做,因为我的目标是页面上的特定元素,这些元素可能与页面上的其他元素共享相同的名称或类名。谢谢

  • 问题内容: 在实时自动化中,在对每个元素执行某些操作之前,我们是否要检查每个元素的存在? 无论哪里有声明,都有机会出现 NoSuchElementException 。我的问题是我们是否每次都要检查元素的存在? 是否每个语句都必须用块包围? 问题答案: 您可能会发现使用AbstractWebDriverEventListener类特别有用。此类实现WebDriverEventListener接口,