当前位置: 首页 > 知识库问答 >
问题:

如何在硒页对象中使用驱动程序实例?

斜浩穰
2023-03-14

在Selenium PageObjects中,我没有实例化任何web驱动程序实例,也没有如下所示进行编码

@FindBy(id = "userID")
WebElementFacade txtusername;

我试图在Selenium Page对象函数中实现以下代码

Actions action = new Actions(driver);
WebElement mainMenu = driver.findElement(By.linkText("MainMenu"));
action.moveToElement(mainMenu).moveToElement(driver.findElement(By.xpath("submenuxpath"))).click().build().perform();

有谁能建议我,在使用页面对象模型时,如何在上述代码中使用webdriver实例?

共有2个答案

景嘉实
2023-03-14

有两种方法。

第一种方法:可以在创建webdriver实例的类中为其创建getter并使用它。

第二种方法:可以继承一个类,在该类中创建webdriver实例,然后再次使用该驱动程序。

对我来说,我创建了一个基类,其中初始化了我的网络驱动程序,并放置了最有用的方法(如等待元素、导航到页面等)。继承这个类允许我所有的页面对象拥有一系列非常有用的功能。如果需要,我的每个PageObject都使用基类的网络驱动程序实例。

蔡晨
2023-03-14

您可以将驱动程序实例保留在父类中,所有页面对象都从父类继承。

public abstract class AbstractPage {
    protected WebDriver driver;

    protected AbstractPage(WebDriver driver)
    {
        this.driver = driver;
    }
}

public class ExamplePage extends AbstractPage {
    @FindBy(id = "userID")
    WebElementFacade txtusername;

    public ExamplePage(WebDriver driver) {
        super(driver);
    }

    public void someMethod() {
        Actions action = new Actions(driver);
        WebElement mainMenu = driver.findElement(By.linkText("MainMenu"));
        action.moveToElement(mainMenu).moveToElement(driver.findElement(By.xpath("submenuxpath"))).click().build().perform();
    }
}
 类似资料:
  • 我们如何使用Testng在硒网络驱动程序中选择下拉值?

  • 我试图启动firefox浏览器,并使用selenium webdriver打开一个网页示例< code>google.com。我成功地启动了浏览器,但启动网页时出现了一些问题。我得到的错误是 线程“main”中的异常 org . open QA . selenium . remote . unreachablebrowserexception:无法启动新会话。 可能的原因是远程服务器地址无效或浏览

  • 你好,我有这个文件 我想知道如何使用参数识别文档,并通过查找带有“Car”参数的产品并使用MongoDB Java驱动程序将价格更新为15来更新参数中的特定对象。 谢谢你

  • 我正在使用PageObjects在Selenium Webdriver中制作一个测试套件,但我怀疑,即使驱动程序指向不同的框架,WebElement引用的实例是否可以工作?我为之编写测试的网站有很多框架(不,我不能停止使用框架:-),每个网站上的一个框架元素是一个顶栏。我想为这个框架创建一个页面对象,我可以从包含它的其他页面对象中初始化和使用它。 但我怀疑阉羊你可以使用WebElements当驱动

  • 根据Selenium WebDriver文档,我们可以将名称或句柄传递给driver.switchTo().window(nameOrHandle);为了获取句柄,我们有getWindowHandle。如何根据窗口名称打开新窗口?如何获取当前窗口名称? / ***将此驱动程序未来命令的焦点切换到具有给定名称/句柄的窗口。* *有关详细信息,请参阅W3C WebDriver规范*。**@param

  • 问题内容: 我有一个从相同的基类继承的以下硒测试套件,当我运行整个测试套件时,如何使测试使用相同的Web驱动程序实例?我也想单独运行每个测试。我相信这将大大减少运行套件所需的时间。 该测试是从maven运行的,而maven依次运行每个测试类。 所有测试均继承自的基类 测试例 问题答案: 我对JUnit不太满意…似乎您正在尝试此处建议的解决方案: jUnit4.x中Suite执行之前和之后的挂钩 这