【问题标题】:How to resolve NoSuchElement exception in selenium?如何解决硒中的NoSuchElementexception?
【发布时间】:2015-10-09 01:11:39
【问题描述】:

我最初只有一个链接。现在我收到了显示按钮而不是 A/B 测试链接的要求。我必须让他们的 id 相同,因为我不想为按钮编写新的测试。

为了决定显示哪个,我在 li 项目中添加了两个独特的类。这工作正常。

但在测试时它开始失败,尽管按钮存在,但显示消息“订阅者链接不可用”。

我认为它可能会因为两个相同的 id 而失败,所以我添加了两个相同的类并将选择器从 id 更改为类。但它仍然失败。

<li class="not_subscriber subscriber-text-link " style="display:none">
  <a class="link-orange subscribe" href="" id="subscribe_link"> Subscribe </a>
</li>
<li class="not_subscriber subscriber-orange-btn " style="display:none">
  <a class="btn-orange subscribe" href=""  id="subscribe_link" > Subscribe </a>
</li>

@FindBy(css = ".subscribe")
@NoSuchElementDescription("Subscriber link is not available")
protected WebElement _subscribeLink;

有什么方法可以让我不必编写新的测试和更改 id 并且测试将开始通过??

【问题讨论】:

  • 分享您的代码。您的列表项以 display:none 开头。没有看到你的代码就不能说太多。
  • 一个在所有页面上运行的文件,基于优化变量我正在设置一个 li 项目的显示“块”。问题是 Button 在运行代码时可见,但仍然找不到。代码很长。
  • 从您显示的代码中,您可以通过 class= subscribe 找到该元素。如果你把这个类放在你的按钮上,它应该可以工作。
  • 已经添加到链接和按钮中。见上面的锚标记。

标签: javascript java selenium nosuchelementexception


【解决方案1】:

请你试试下面的 Xpath:-

//li[@class='not_subscriber subscriber-orange-btn ']/a[@class='btn-orange subscribe']

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    将选择器更改为 xpath。几乎每个元素都有一个 xpath。并确保将双引号替换为单引号。它应该比 class 或 id 选择器更可靠。

    【讨论】:

    • XPath 并不比 class 或 id 更可靠。 XPath 速度较慢,并且取决于您如何制作它们,比其他方法更脆弱。
    • Xpath 如何比 ID 选择器更可靠,任何支持链接/文档?
    • 可靠我的意思是你应该能够在每个元素上找到一个 xpath。这只是我自己使用 Selenium 的经验的看法,没有支持文档。
    猜你喜欢
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2021-06-21
    • 2020-09-25
    • 2015-01-09
    • 2015-11-06
    • 2021-04-20
    • 2020-10-04
    相关资源
    最近更新 更多