【问题标题】:How to click a button in an automated test using Selenium and Java如何在使用 Selenium 和 Java 的自动化测试中单击按钮
【发布时间】:2020-09-21 10:55:42
【问题描述】:

我正在尝试使用 Selenium 自动化测试,并且我想使用 xpath 来单击一个按钮。这就是我正在做的:

WebElement LogInButton = driver.findElement(By.xpath("/login"));
LogInButton.click();

但我收到一条错误消息:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"/login"}

关于该按钮,我掌握的唯一信息是:

<a href="/login">Login</a>

以及它重定向到的 URL。 我究竟做错了什么?引用此按钮的正确方法是什么?任何帮助请告诉我。谢谢

【问题讨论】:

  • 您的 xpath 正在寻找标签“”。您要指定文本或 href。试试 By.linkText("Login")

标签: java selenium xpath css-selectors linktext


【解决方案1】:

要在元素上调用click(),您可以使用以下任一Locator Strategies

  • 使用linkText

    driver.findElement(By.linkText("Login")).click();
    
  • 使用cssSelector

    driver.findElement(By.cssSelector("a[href='/login']")).click();
    
  • 使用xpath

    driver.findElement(By.xpath("//a[@href='/login' and text()='Login']")).click();
    

最佳做法

当您调用click() 时,理想情况下您需要为elementToBeClickable() 诱导WebDriverWait,您可以使用以下Locator Strategies 之一:

  • 使用linkText

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Login"))).click();
    
  • 使用cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a[href='/login']"))).click();
    
  • 使用xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@href='/login' and text()='Login']"))).click();
    

参考

您可以在以下位置找到一些相关讨论:

【讨论】:

猜你喜欢
  • 2021-03-29
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多