Явное ожидание не работает для моего кода, так как эта строка кода не ждет, пока этот элемент будет видимым или активным - PullRequest
0 голосов
/ 31 мая 2019

Явное ожидание не ожидает нажатия на элемент, когда я ввожу имя пользователя и пароль

Сценарий:

  1. Нажмите на вход на whataburger.com
  2. Введите имя пользователя и пароль
  3. Дождитесь включения кнопки входа и нажмите кнопку входа (на этом этапе селен не ожидает включения элемента и нажмите кнопку)

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

private static WebDriver driver;
private static WebDriverWait wait;

public static void main(String[] args) throws InterruptedException  {
    // TODO Auto-generated method stub

    Browsxers a = new Browsxers();
    try {
        driver = a.browse(driver);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    wait = new WebDriverWait(driver, 40);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 driver.get("https://wbdotcomqa.azurewebsites.net/home");
 driver.findElement(By.xpath("//*[@id='navbar']/div/div[1]/div/div[2]/div/a/span[1]")).click();
 Thread.sleep(1000);
driver.findElement(By.id("username")).sendKeys("Whataburgerqa86+1112@gmail.com");
driver.findElement(By.id("password")).sendKeys("burger01");


WebElement wb = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//button[@class='btn wb-btn-default center-block']")));
wb.click();

без ошибок селен действует так, как будто он нажал кнопку, когда он был отключен

1 Ответ

1 голос
/ 04 июня 2019

На вашей странице, когда ввод учетных данных не заполнен, в форму добавляется атрибут disabled .

enter image description here

и когда учетные данные не пусты - атрибут disabled исчезает:

enter image description here

Если исходить из вышеизложенного, я бы предпочел следующий подход:

  1. Подождите, пока кнопка с атрибутом disabled не исчезнет
  2. Подождите, пока кнопка без атрибута disabled не станет активной

Соответствующие строки кода будут:

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//button[@class='btn wb-btn-default center-block' and @disabled]")));
WebElement wb = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='btn wb-btn-default center-block' and not(@disabled)]")));

Дополнительная информация:

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