【问题标题】:Can we initialize WebDriverWait inside class我们可以在类中初始化 WebDriverWait
【发布时间】:2020-05-22 09:54:02
【问题描述】:

我们可以在类中使用初始化 [WebDriverWait wait=new WebDriverWait(driver,10);] WebDriverWait 吗?

假设在一个类中我有 10 个方法,所以我没有在每个方法中初始化等待 10 次,而是在所有方法之外和类内初始化一次。

我有一个框架,我从 Excel 表中读取数据并运行测试方法。现在,当我在方法外初始化等待时,我观察到没有从 excel 读取数据并且浏览器关闭。

它与数据读取器无关。在方法外初始化等待时出现一些问题。

同样的情况,我尝试在这 10 种方法中初始化等待。

有什么原因吗?

【问题讨论】:

    标签: java selenium-webdriver webdriverwait


    【解决方案1】:

    您不能直接将其初始化为实例变量,除非您有一些WebDriverFactory,它允许您在初始化对象之前将driver 传递给new WebDriverWait()。但是,您可以尝试像这样在构造函数中初始化它:

    public class PageObject {
        private WebDriverWait wait;
    
        public PageObject(WebDriver driver) {
            PageFactory.initElements(driver, this);
            wait = new WebDriverWait(driver, 10);
        }
    }
    

    然后在你的方法中使用wait

    【讨论】:

    • 是的,假设我们已经在构造函数中初始化了一个驱动实例,那么我们可以在构造函数之外(在类内但在任何方法之外)初始化等待。我试图这样做,eclipse没有给出任何警告或错误,但由于以这种方式初始化数据,因此没有读取数据。需要知道为什么。
    • @shikhar 我需要看看你是怎么做的代码
    • @shikhar 因为您将null WebDriver 传递给WebDriverWait,然后将值分配给driver 变量。
    • @shikhar 是的,它仍然为空。首先初始化实例变量。它们应该在构造函数之前初始化或在构造函数中初始化。
    • 非常感谢您让我理解它。
    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2021-11-30
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多