Селен (firefox) висит на WebElement.Click - PullRequest
0 голосов
/ 23 января 2020

Проблема

Я методом проб и ошибок заметил, что моя функция щелчка click (код ниже) зависает в firefox в конкретном c случае. Что происходит, так это то, что я ввожу логин, нажимая кнопку входа в систему, а затем пытаюсь нажать кнопку профиля, сразу после которой зависает выполнение.

Насколько я понимаю, проблема заключается в том, что WebElement.click() является функцией остановки и для по какой-то причине это не решается. Мое решение сейчас состоит в том, чтобы вместо этого сделать WebElement.sendKeys(Keys.ENTER) вызов. Это работает, но я хотел бы знать, как я могу решить эту проблему, поскольку sendKeys работает не во всех случаях. Пока это происходит только в firefox, у меня нет этой проблемы в chrome.

driver.manage().timeouts().pageLoadTimeout, кажется, не имеет никакого значения.

Если я Thread.sleep между двумя вызовами щелчка, тогда это также работает.

Выполнение

SeleniumCommands.click(driver, loginButton);
SeleniumCommands.click(driver, profilePage);

Ожидаемый результат

логин и go на страницу профиля.

Фактический результат

логин и селен зависают при втором driver.findElement(locator).click(); вызове.

Обходной путь

SeleniumCommands.click(driver, loginButton);
SeleniumCommands.click2(driver, profilePage);

Код

public static Boolean click(WebDriver driver, By locator, Integer... timeout) {

    try {
        waitFor(driver, ExpectedConditions.elementToBeClickable(locator), (timeout.length > 0 ? timeout[0] : null));
    } catch (org.openqa.selenium.TimeoutException exception) {
        return false;
    }

    // this sometimes hangs in firefox
    driver.findElement(locator).click();

    return true;
}
public static Boolean click2(WebDriver driver, By locator, Integer... timeout) {

    try {
        waitFor(driver, ExpectedConditions.elementToBeClickable(locator), (timeout.length > 0 ? timeout[0] : null));
    } catch (org.openqa.selenium.TimeoutException exception) {
        return false;
    }

    // This doesn't hang on firefox, but it can't always be used
    driver.findElement(locator).sendKeys(Keys.ENTER);

    return true;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...