问题标签 [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 回答
117 浏览

java - 如何构建一种方法来遍历 WebElements 并返回使用 Selenium 和 Java 显示的方法?

因此,页面充满了许多类似的属性,如下面的这两个元素。例子:


我正在使用 PageObject 和 PageFactory 来获取元素并将它们放在这样的数组中:

问题是这样的:我需要单击这些类似按钮之一,而不使用索引(因为它原来是一个地狱维护)。我想到了一种方法,可以收集列表的所有 webElements 并返回显示在屏幕上的单个元素(我对新想法持开放态度),所以这是我尝试过的两种方法,但均未成功:


我搜索了很多,无法解决这个问题。先感谢您!

编辑:

根据要求,下面是包含多个 div 子级的 div 父级的两个示例: 第一个 div:

第二个div:

0 投票
2 回答
874 浏览

java - Selenium(Java)中的“NoSuchElementException”之后如何继续执行?

我正在尝试从此页面创建 WebElements 的 ArrayList:

在此处输入图像描述

如果所有元素都显示出来,它们就可以被添加到 ArrayList 中。

如果我从网页中删除其中一个元素(不是代码),我会在运行我的测试用例时收到此错误:

有没有办法绕过这个错误并强制java跳过丢失的元素,但继续添加显示的元素?

我的代码非常简单。我正在使用 JUnit 来运行我的测试用例。使用 @FindBy 注释正确定义了元素。

我尝试用 Try/Catch 包围变量并使用 NoSuchElementException,但我不确定如何格式化它。在这种情况下可以使用“继续”关键字吗?

希望我提供了足够的信息。任何帮助,将不胜感激。谢谢!

0 投票
1 回答
102 浏览

java - 一定要维护测试用例年表> Selenium Page Factory> 元素初始化导致POM模型下的“No such Element Exception”

好的,所以下面的问题是我试图解决的问题,直到我发现错误不在我的代码中,而是在测试类中。不删除问题,因为如果他们遇到相同的问题,它可能会对某人有所帮助。

确保您的测试用例(在这种情况下使用 TestNG)按时间顺序编写,或者应正确定义它们的顺序。

所以在上面的注释之后是我所面临的:

当 Selenium Page Factory 正在初始化在我的框架的基类中声明的 WebElements 时,我的代码无法找到 Web 元素。

元素引用正确,代码正常工作

好吧,这个问题可能看起来很重复,但其他问题的答案对我没有帮助。我尝试过隐式/显式等待;我尝试使用 PageFactory 将所有内容都容纳在单个班级中,但似乎没有任何效果。

我为简单的“Google 搜索”创建了一个简单的 TestNG 框架,其中 GoogleSearchAction 类正在扩展后面的“BaseClass”元素使用页面工厂进行初始化。下面是基类的代码:

现在下面是子动作类

以下是 StackTrace:

只是重述:定位器是正确的并且代码工作正常如果不使用页面工厂。

我很确定这是一个愚蠢的错误,我无法确定它。

任何帮助将不胜感激。

0 投票
1 回答
653 浏览

selenium-webdriver - 页面工厂的空指针异常

我正在做一些编码来学习 PageFactory,但是在尝试使用页面工厂调用另一个类中的方法时出现此错误

下面是我的元素类:

下面是我的登录页面的第一个测试类:

还有我的第二堂测试课:

其他一切工作正常,但我的第二个测试类中的 makeMove() 函数给出了一个空指针异常:

0 投票
1 回答
1128 浏览

java - 如何检查 PageObject 的所有元素是否有效(Java、Serenity、Cucumber)

我正在黄瓜中编写场景测试用例,我想在运行测试之前检查 PageObject 的所有元素是否有效并且 selenium 是否可以与它们交互。我想避免运行我的多步骤、长测试用例只是为了到达最后一页并得到一个找不到元素的异常。我希望能够在编写 PageObject 之后对其进行测试,因此我可以确定所有元素都是可访问的(在运行长时间测试之前......)。

我正在处理的网站没有一致的 id 标签,使用 @FindBy() 有时需要一些时间。我正在尝试做一个简单的过程:

  1. 导航到 PageObject url
  2. 检查 PageObject 中的所有元素是否都可以被 selenium 访问

您知道一种无需为每个元素创建方法即可访问所有 PageObjects 元素的方法吗?初始化所有元素的方法?

0 投票
2 回答
854 浏览

java - 创建了两个 WebDriver 实例

我是 Selenium 和 Java 的新手。我正在尝试实现 POM-PageFactory 模型。我的 testng 方法是启动 2 个 WebDriver 实例。

我有一个包含驱动程序对象的 BaseClass 和一个负责根据浏览器调用正确的 drive.exe 的 init 方法。PageClass 是页面对象存储库,具有很少的实用方法。TestClass 有测试方法。如果我在 TestClass 中调用 init 方法,我的代码就可以正常工作。但是我打算在 BaseClass 中调用。如果我这样做,则会创建 2 个驱动程序对象实例。请看下面的代码

0 投票
0 回答
80 浏览

selenium - Selenium Apache POI - 从 Excel 读取数据并在测试脚本中使用该数据的最佳方法是什么

我有一个页面对象模型项目结构。项目结构如下:

utils包中有 excel 类,我通过调用我在 excel 类中定义的 getCellData 方法从 excel 中读取测试数据。

pageObjects包中,我使用页面工厂拥有页面的所有定位器。

actions包中,我有需要在特定页面上完成的操作。所以,这是我的查询 - 截至目前,我通过传递行号和列号从 excel 表中获取数据。这是我的代码:

像这样我直到现在都从excel中获取数据,从长远来看这似乎是不可行的。有人可以帮助或建议最好的方法来做同样的事情。提前致谢!

0 投票
1 回答
47 浏览

selenium - 无法点击菜单链接

我正在尝试在菜单列表中打开一个菜单,然后单击菜单中的链接。菜单列表结构就像有两个并排的链接。一个链接转到提供摘要的主要部分,另一个链接打开菜单。我可以单击转到主要部分的链接,但无法单击打开菜单的链接,尽管我使用的 XPath 可以唯一地标识菜单链接。HTML是:

我需要访问span.

没有文字Menu Link。我已经添加了该文本,以便可以理解结构。我用于菜单链接的 XPath:

我用于主链接的 XPath 是:

另外,我已经使用页面工厂将该元素定义为:

当我尝试单击主链接时,两者都在工作。但我无法点击它旁边的菜单链接。我已经实现了 20 秒的显式等待。我得到TimeOutException

0 投票
2 回答
1113 浏览

java - 无法使用页面工厂从 selenium 中的另一个测试类调用测试方法

我确实有一个用于登录功能的页面对象和测试类,同时将该测试登录方法调用到另一个测试类中,它显示空指针异常,该登录必须重用于不同的功能,它必须登录才能进入另一个功能。

}

我在另一个测试类中提到了相同的登录方法,所以我提到了不同类的相同登录方法,任何帮助我如何调用登录方法而不是为不同的功能类编写冗长的代码

0 投票
1 回答
178 浏览

c# - 如何使用 PageFactory 在子类中定义 @findBy 注释?

我在一个使用 Selenium 和 C# 的自动化项目中工作。我使用页面对象模式来定义每个页面(及其定位器),然后在 Test 类中分别定义测试。我有一个 Page 类,它是页面的基类,我称之为: PageFactory.InitElements (webDriver, this);

并定义所有页面的通用方法。然后每个页面都继承自Page,并使用@FindBy注解定义对应的元素:

添加了一个新的登录页面,我必须同时保留(新登录和旧登录)并能够使用这两个页面运行测试。两个页面具有相同的元素(不是定位器),并且它们必须能够响应相同的方法,例如:login (user, pass) 想法是定义类的层次结构:BaseLogin(继承自 Page), LoginPage 和 NewLoginPage(都继承自 BaseLogin),在 BaseLogin 中可以定义元素(IWebElement)和常用方法。然后在每个子类中将每个元素与相应的定位器关联/关联。

这是为了避免在每个页面上重复允许我与页面交互的代码。

如何将元素“IWebElement UserName”与其相应的定位器关联/关联?