问题标签 [page-factory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
87 浏览

java - 页面对象工厂 - NullPointerException

对登录页面使用页面对象模型和页面分解,我在 LoginPage.java 中获取对象,而操作在 LoginScript.java 中。我在“Ele_UserNameEdit.clear();”行中得到一个 java.lang.NullPointerException 请帮助检查代码。谢谢。

这是我的 Loginpage.java :

这是我的 LoginScript.java :

0 投票
2 回答
3376 浏览

java - 如何在页面对象模型上传递变量值

我正在使用页面对象模型创建我的项目,

要定义简单元素,最简单的定义是

并称之为:driver.findElement(loginEmailParse);

但是,当我们有带变量的条件时,

By.xpath("//input[@id='" + accountID + "']")

这里的“accountID”是可变的,

我们如何定义它?

0 投票
2 回答
1810 浏览

selenium-webdriver - 无法在 Appium 中执行操作,因为未识别 PageFactory

我想启动并执行诸如在应用程序中输入用户名详细信息之类的操作,但由于错误,我的执行一次又一次失败

File.separator +"TodoistInputData.properties"); prop.load(输入);

==================================================== ============================================

错误来了

0 投票
1 回答
4511 浏览

java - 无法在原始类型 void 上调用 sendKeys(String)

我是 selenium 的新手,我正在使用页面工厂实现数据驱动的框架工作并不断收到以下错误:

无法在原始类型 void 上调用 sendKeys(String)

尝试设置我的测试脚本时 - 用于以下内容:

String sEmail = ExcelUtil.getCellData (1,1);

loginpage.setEmail().sendKeys(sEmail);

这是我的java文件:

这是我的测试脚本-

0 投票
2 回答
136 浏览

selenium - 使用具有相同 selenium 测试的不同页面对象集

[这是与 SQA 交叉发布的 - https://sqa.stackexchange.com/questions/35081/using-different-sets-of-page-objects-with-the-same-selenium-tests]

我正在为一组类似的网站开发硒测试套件。测试套件将针对每个站点单独执行,并且套件中的测试适用于所有网站。

这些网站建立在相同的底层平台上,但是具有不同的主题/方案,因此这些网站的页面对象需要不同。这不是一个或两个选择器不同的情况,而是大多数选择器不同 - 但结构的其余部分是相同的。

我可以轻松地创建两组(或三组,或其他)页面对象,但是我不知道如何告诉测试执行器(在我的例子中是 Cucumber cli)要使用哪些页面对象。

我能想到的最接近的方法是使用具有公共基类的不同包名称,然后使用从公共基类扩展的各个页面。另一种可能性是将所有选择器提取到属性文件中,并根据输入参数加载一个或另一个,但这会阻止我使用 PageFactory。我也可以,可能,在不同的源集中创建单独的页面对象集,然后根据我的需要编译一个或另一个 - 但是,我可以再次想到理论,而不是执行。

那么,什么是正确的方法以及如何实现呢?如果重要,项目是使用 gradle 构建的。

0 投票
2 回答
1071 浏览

java - Selenium Webdriver - 在pagefactory中实现链式webdriver findelement

我有一个 Webelements 列表,其中选择了一个随机元素。现在有一个随机的 webelement,我需要找到其中的所有子元素。我如何在 pagefactory 中实现这一点。

在硒中,这是有效的:

在页面工厂中,我尝试过:

坚持如何使用页面工厂注释在随机元素中获取标题。

我知道这会起作用:

当我在整个项目中使用页面工厂注释时,有没有办法实现同样的效果。

0 投票
2 回答
4093 浏览

selenium - 在 TestNG XML 文件中实现范围报告时出现 java.lang.ClassCastException 错误

我收到一条错误消息,告诉 java.lang.ClassCastException:当将 TestNG XML 文件作为测试套件运行时,[My extent report class name] cannot be cast to org.testng.ITestNGListener。

我已经使用 MAVEN 和 TestNG 的页面工厂设计技术自动化了一个网页,其中包含在一个包中初始化的 6 个页面类对象。我还在另一个包中编写了范围报告侦听器类。除此之外,我在另一个包中还有一个基类,它是所有 6 个页面对象初始化类的超类。我已经为 3 个页面类编写了测试用例,基类也是这些类的超类。

我通过添加所有 3 页测试用例并添加范围报告类作为此 XML 文件的侦听器来生成 TestNG XML 文件。

我将通过从下面的每个包中包含一个类来展示我的框架的结构。

页面对象初始化包-登录类

基础包 - 测试基类

测试用例包——登录页面测试类

Test Util 包 - 范围报告侦听器类

TestNG XML 文件

0 投票
1 回答
604 浏览

java - Selenium 中的 PageFactory 是什么以及 PageFactory.initElements(driver, this) 语句的用途是什么

请您解释一下 Selenium 中的 PageFactory 是什么以及PageFactory.initElements(driver, this)语句会发生什么,还请解释一下 b/wBy@FindBy.

提前致谢。

0 投票
1 回答
428 浏览

selenium-webdriver - 为什么我应该在页面对象类中使用@FindBy 而不是 driver.findElement()

我正在创建一个页面对象框架,同时了解它的概念,我知道页面工厂(@FindBy)与页面对象结合使用。但是,当我可以在 Page Object 类中将 driver.findElement 与我的定位器一起使用时,我无法理解为什么需要使用 @FindBy。例如 :

//@FindBy 代码

//带有 driver.findElement 的代码

这里的两个代码之间有什么区别,因为这两个代码基本上都在做同样的事情?

0 投票
0 回答
42 浏览

java - 将页面工厂与页面对象模式结合起来是一种反模式吗

正如标题所说。我有一段代码,其中这种技术是 IMO 合理的。

我有一个带有table的页面,每一行都包含产品名称,其中 id 取决于行号:

我正在查找带有 PageFactory 注释的行:

只有这样我才知道页面上有多少产品,所以我要找到每个产品:

quietFindElement 在 Selenium 中搜索元素,捕获 NoSuchElementException 和 TimeoutException,如果它们被抛出则返回 null。

这种溶液干净吗?