一尘不染

selenium隐式等待不起作用?

selenium

我正在学习Java Maven Selenium。我想要在Selenium中使用这样的东西implicitlyWait

  1. 打开网站(例如https://www.facebook.com
  2. 单击登录的电子邮件字段
  3. 等待20秒
  4. 输入我的电子邮件

这是我的简单代码:

package com.org.learningMaven;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;

public class HelloWorldTest {   
    @Test
    public void login() {
        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.facebook.com/");
        driver.findElement(By.id("email")).click();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.findElement(By.id("email")).sendKeys("myemail@yahoo.com");
    }
    private void sendKeys(Keys enter) {
        // TODO Auto-generated method stub

    }
}

该代码不起作用。它只会打开Facebook,单击电子邮件字段并输入我的电子邮件ID,而不是等待10秒钟才输入我的电子邮件。


阅读 588

收藏
2020-06-26

共1个答案

一尘不染

Implicit Wait并且Explicit Waits无法正常工作,他们将在指定的持续时间内最大程度地等待元素。如果在执行下一步之前找到了元素,则它们将一直等待。

如果您希望测试等待确切的时间,则可能需要使用。

Thread.sleep(Time duration in milliseconds);

您可能要参考Diff b / w隐式等待和显式等待

显式等待 :显式等待是您定义的代码,用于在继续执行代码之前等待特定条件发生。

隐式等待 :隐式等待是告诉WebDriver在尝试查找一个或多个元素(如果不是立即可用)时轮询DOM一定时间。

Thread.sleep :在睡眠代码中,即使页面准备在1秒钟后进行交互,它也将始终等待上述秒数。因此,这可能会减慢测试速度。

2020-06-26