0

我是 selenium Java 的新手,任何人都可以帮助并给我一个如何创建 wait.until java 命令的简单示例吗?如果有错误请更正我的代码谢谢

import org.openqa.selenium.support.ui.WebDriverWait;
//lines of code
WebDriverWait waitVar = new WebDriverWait (driver, 1000);
waitVar.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"btnDraftReports\"]"))).click();

还是我应该使用这个?

waitVar.until(ExpectedConditions.elementToBeClickable(By.id("btnDraftReports"))).click();

谢谢你和更多的力量

4

4 回答 4

0

WebElement XYZ= driver.findElement(By.xpath("xpath")); WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.elementToBeClickable(XYZ)); XYZ.click; 为了获得更好的答案,您需要显示 HTML

于 2020-10-23T14:44:44.367 回答
0

试试下面的代码

/* This method is used for wait until element found */
public void expliciteWait(WebElement element, int timeToWaitInSec, WebDriver driver) {
    WebDriverWait wait = new WebDriverWait(driver, timeToWaitInSec);
    wait.until(ExpectedConditions.visibilityOf(element));
于 2020-02-06T06:51:37.700 回答
0

从语法上讲,这两个表达式都是正确且有效的Selenium定位器策略,其中:

  • By.xpath("//*[@id=\"btnDraftReports\"]"): 此表达式使用xpath引擎。
  • By.id("btnDraftReports"): 此表达式使用id属性。

但是,一旦您在调用时等待ExpectedConditions返回元素,因此您应该使用方法click()而不是方法,如下所示:visibilityOfElementLocated()elementToBeClickable()

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"btnDraftReports\"]"))).click();
//or
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("btnDraftReports"))).click();

琐事

现在,有争议的问题是使用哪个定位idxpath

由于Selenium在实践中id属性仍然被认为是最有效的定位器策略

您将在讨论中获得更多见解Official locator strategies for the webdriver

于 2018-05-14T20:01:12.357 回答
0

visibilityOfElementLocatedelementToBeClickable行为不同。

何时使用什么:所有预期条件取决于场景。

visibilityOfElementLocated :当您想等到网页元素的可见性显示在网页上时,您可能想要使用此预期条件。它更多的是关于网络元素的可见性。

例子 :

  1. 登录任何网站后,您应该让您的脚本知道该登录已通过使用 visibilityOfElementLocated 条件成功完成。您可能会考虑您的个人资料图片或登录后出现的任何链接。

elementToBeClickable :当您想等到 Web 元素变为可点击时。它更多的是关于网络元素的点击能力。

例子 :

  1. 在创建帐户时,您一定在许多网站中看到了协议复选框。这种情况是在您选中阅读协议复选框之前,您无法单击注册按钮。在这里,您将不得不使用 elementToBeClickable 条件。

休息一下我认为您编写正确的代码。

希望这将帮助您了解上述条件之间的基本区别。

于 2018-05-15T08:46:13.563 回答