如何使用 Selenium 和 Java 在自动化测试中单击按钮
How to click a button in an automated test using Selenium and Java
我正在尝试使用 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。
我究竟做错了什么?引用此按钮的正确方法是什么?任何帮助请告诉我。谢谢
要在元素上调用 click()
,您可以使用以下任一方法 :
使用 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()
引入 并且您可以使用以下任一方法 :
使用 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();
参考
您可以在以下位置找到一些相关讨论:
我正在尝试使用 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。 我究竟做错了什么?引用此按钮的正确方法是什么?任何帮助请告诉我。谢谢
要在元素上调用 click()
,您可以使用以下任一方法
使用 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()
引入
使用 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();
参考
您可以在以下位置找到一些相关讨论: