@JeffC: да, конечно, я возьму это! ;)

ользую Java и Selenium Webdriver для тестирования функциональности одностраничного веб-приложения.

По этой причине очевидно, что элементы вводятся и удаляются из 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, и несколько ответов указывают в сходном направлении, но ни один ответ не сфокусирован на эффективности / производительности:

WebDriver - ожидание элемента с использованием JavaSelenium WebDriver: дождитесь появления элемента, когда найти его с помощью WebDriver.findElement невозможно

Спасибо за ваше время и помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос