如何通过硒根据模态框中的 HTML 单击元素?



我正在自动化一些我需要注销的网站。我在这段代码中遇到了困难:

WebDriverWait wait = new WebDriverWait(d, 10);
WebElement Category_Body = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("user logout")));
Category_Body.click();
d.findElement(By.id("logout_user")).click();
Thread.sleep(1000);

.HTML:

<a class="user logout" title="Sign out" data-target="#confirm_popup" data-toggle="modal"></a>

错误:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"user logout"}

为此尝试以下代码:

WebDriverWait wait = new WebDriverWait(d, 10);
WebElement Category_Body = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".user.logout")));
Category_Body.click();

PS:你也可以用ExpectedCondition.elementToBeClickable来做到这一点。

希望对您有所帮助!

我认为问题出在标识符上 您已使用

WebElement Category_Body = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("user logout")));

但根据您的 HTML

<a class="user logout" title="Sign out" data-target="#confirm_popup" data-toggle="modal"></a>

该链接没有名为">用户注销"的 ID 如果没有使用 id 尝试使用类By.findElementByClassName("user logout")

作为第二种解决方案,尝试使用 xpath(大部分时间都有效(

如果两个解决方案都不可用,您可以使用JavascriptExecutor(难以捕获的元素可以使用JavascriptExecutor轻松处理(

注意:主要问题是在没有此类ID时使用"用户注销"

干杯

根据您在模型框中找到要注销的所需元素,您需要诱导WebDriverWait元素可单击,您可以使用以下任一选项:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a.user.logout[title='Sign out'][data-toggle='modal']"))).click();
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='user logout' and @title='Sign out'][@data-toggle='modal']"))).click();
    

相关内容

  • 没有找到相关文章

最新更新