Клавиши отправки Selenium периодически пропускают текстовые поля - PullRequest
0 голосов
/ 29 января 2020

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

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

Я также пытался проверить, полностью ли загружена страница, подождав, пока каждый элемент и кнопка не появятся на странице, прежде чем продолжить.

Браузер, с которым я тестирую, - chrome. (Версия 79.0.3945.130) Веб-драйвер selenium - 3.11.2 Драйвер chrome обновлен до chrome

private IWebElement FirstNameInput => Webdriver.FindElement(By.Id("first-name-input"));
// The remaining input fields

public void VerifyPageIsFullyLoaded()
{
    // Wait until all elements exist
}

public void EnterFormDetails(FormDetail formDetail) 
{
    WebDriver.WaitUntilElementExists(FirstNameInput);
    FirstNameInput.Click();
    FirstNameInput.SendKeys(formDetail.FirstName);

    WebDriver.WaitUntilElementExists(LastNameInput);
    LastNameInput.Click();
    LastNameInput.SendKeys(formDetail.LastName);

    WebDriver.WaitUntilElementExists(DateOfBirthInput);
    DateOfBirthInput.Click();
    DateOfBirthInput.SendKeys(formDetail.DateOfBirth);

    WebDriver.WaitUntilElementIsClickable(SubmitButton);
    SubmitButton.Click();
}

Обновление: Только что попробовал последний стабильный выпуск веб-драйвера selenium ( 3.141.0) и обнаружил, что это все еще не так надежно.

1 Ответ

0 голосов
/ 29 января 2020
JavascriptExecutor javascript = (JavascriptExecutor)webdriver;

javascript.executeScript("document.getElementById('FirstNameInput').value='test123'");
javascript.executeScript("document.getElementById('LastNameInput').value='test123'");
javascript.executeScript("document.getElementById('DateOfBirthInput').value='test123'");

SubmitButton.Click();

и если кнопка отправки находится в теге формы, вы можете использовать метод submit().

...