gpt4 book ai didi

java - 等待页面元素 (xpath) 出现在 Selenium Webdriver 中的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-30 07:46:45 25 4
gpt4 key购买 nike

我正在使用 Java 和 Selenium Webdriver 来测试单页 Web 应用程序的功能。

出于这个原因,显然,元素是动态注入(inject)和从 DOM 中删除的。

我知道我可以使用类似的代码等待元素出现在 DOM 中,该代码使用 WebDriverWait(我写的非常简洁的模板略有更改 GitHub ):

public void waitForElement() throws Exception {
/*
Inject the following snippet in any web page to test the method
<button class="i-am-your-class" onclick="alert('Wow, you pressed the button!');">Press me</button>
*/
System.setProperty("webdriver.gecko.driver", "C:\\Program Files (x86)\\Mozilla Firefox\\geckodriver.exe");
WebDriver driver = getDriver();
WebDriverWait wait = new WebDriverWait(driver, 10); // 10 can be reduced as per Test Specifications
driver.get("http://www.google.com");
WebElement response = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@class='i-am-your-class']")));
response.click();
System.out.println("*****************************************************************************");
System.out.println(response);
System.out.println(response.getText());

driver.close();
}

我想知道这是否也是使用 xpath 获得此类结果的更有效方法。

我一直在研究 Stackoverflow,有几个答案指向类似的方向,但没有答案关注效率/性能:

感谢您的宝贵时间和帮助。

最佳答案

您需要考虑以下几个事实:

  • WebDriverWait() 100 不应该是实时服务员。考虑根据测试规范减少它。例如,将其设置为 10 秒:

    WebDriverWait wait = new WebDriverWait(driver, 10);
  • 在您调用 click() 方法时继续前进,因此不要使用 ExpectedConditions 作为 visibilityOfElementLocated() 方法使用 elementToBeClickable()方法如下:

    WebElement response = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@class='i-am-your-class']")));
  • 优化您的 xpath,包括 tagName,如 By.xpath("//tagName[@class='i-am-your-类']")。举个例子:

    By.xpath("//a[@class='i-am-your-class']")
  • 优化您的代码以在元素通过 WebDriverWait 返回时立即调用 click(),如下所示:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='i-am-your-class']"))).click();

关于java - 等待页面元素 (xpath) 出现在 Selenium Webdriver 中的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50411350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com