【问题标题】:Unable to locate element - Java/Selenium无法定位元素 - Java/Selenium
【发布时间】:2019-12-11 01:13:47
【问题描述】:

我正在尝试选择下面突出显示的元素(这是一个“窗口关闭”按钮):

页面上还有另一个元素为 class='icon-Dismiss',但没有一个元素为 class='dialog-close'。

到目前为止我所尝试的:

driver.findElement(By.xpath("//*[@class='icon-Dismiss' and @class='dialog-close']"))
driver.findElement(By.className("dialog-close"))
driver.findElement(By.xpath("//*[@id='contentBox']"))

然而,在所有情况下,我都会收到以下错误:

no such element: Unable to locate element

有人知道如何选择这个元素吗?

【问题讨论】:

标签: java selenium


【解决方案1】:

您需要为所需的elementToBeClickable() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.contentBox div.icon-Dismiss.dialog-close"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='contentBox']//div[@class='icon-Dismiss dialog-close']"))).click();
    

【讨论】:

    【解决方案2】:

    尝试使用

    driver.findElement(By.cssSelector(".icon-Dismiss.dialog-close"))
    

    另外,请确保此元素不在 iFrame 中。如果是,则需要先切换到 iFrame,然后才能找到该元素。

    【讨论】:

      【解决方案3】:

      如果该对话框是警报,请尝试driver.switchTo().alert().dismiss();

      【讨论】:

        【解决方案4】:

        如果你只是想定位那么 driver.findElement(By.cssSelector("div.icon-Dismiss.dialog-close"));

        但如果你只想关闭警报,那么 alert().dismiss();将是最好的选择。

        【讨论】:

          【解决方案5】:

          如果这是弹出的窗口 尝试:driver.switchTo().alert().dismiss();

          如果这是应用程序,这些定位器应该可以工作

          注意:确保您使用的是等待弹出窗口出现在页面上

          【讨论】:

            猜你喜欢
            • 2020-07-05
            • 1970-01-01
            • 2015-11-08
            • 1970-01-01
            • 2022-01-06
            • 2021-06-21
            • 1970-01-01
            相关资源
            最近更新 更多