【问题标题】:Selenium WebDriver Java cssSelector SpanSelenium WebDriver Java cssSelector Span
【发布时间】:2016-11-11 06:25:39
【问题描述】:

我正在尝试单击在 Java 中使用 Selenium WebDriver 的链接。我的 Java:

driver.findElement(By.cssSelector("span[data-seleniumid=\"Address0\"]")).click();

我页面上的 HTML 如下所示:

<span data-seleniumid="Address0" class="ATAddressLine">1 The Road, Town, City, Postcode</span>

Eclipse中的错误是:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"span[data-seleniumid=\"Address0\"]"}

谢谢

【问题讨论】:

  • 除了一行代码,你还尝试过什么?我建议您查看一些 CSS 参考和教程,以便您可以了解创建选择器的其他方法,以便您可以尝试不同的定位器方法。

标签: java selenium


【解决方案1】:

感谢大家的帮助。未找到该元素,因为它位于 iframe 弹出窗口中,而 Selenium 正在后面的页面中搜索它。

这篇文章:https://stackoverflow.com/a/32836709/6565982 帮助了。

对于未来的任何人,我的代码现在是:

WebElement iFrame= driver.findElement(By.tagName("iframe"));
        driver.switchTo().frame(iFrame);

        // Select an address
        driver.findElement(By.cssSelector("span[data-seleniumid=\"Address0\"]")).click();

        // Switch back to the default page
        driver.switchTo().defaultContent();

再次感谢。

【讨论】:

    【解决方案2】:

    有一个 webdriver 等待条件,比如等待一个元素可点击,然后使用上面的代码。

    【讨论】:

      【解决方案3】:

      我会尝试使用不同的选择器,例如 "span.ATAddressLine"。不确定 webdriver 是否喜欢您的属性 "data-seleniumid"

      【讨论】:

      • Selenium 不喜欢或不喜欢属性。如果操作正确,任何属性都会起作用。
      【解决方案4】:

      不要试图转义内部双引号,而是使用单引号。

      driver.findElement(By.cssSelector("span[data-seleniumid='Address0']")).click();
      

      【讨论】:

      • 您的原始答案与不允许的纯代码答案太接近。以后,请在您的代码中添加一些关于解决问题的不同之处的 cmets,以便 OP 和未来的读者可以轻松看到和理解差异。
      猜你喜欢
      • 2011-12-14
      • 2018-10-14
      • 2019-02-27
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 2017-07-13
      相关资源
      最近更新 更多