问题标签 [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 投票
2 回答
4086 浏览

java - 如何在 Appium Java 中创建适用于 Android 和 iOS 的页面对象模型

我已经使用 Appium 和 Selenium 在 Java 中创建了一个页面对象,该对象当前适用于 Android 应用程序,如下所示:

但是,我需要它来运行 Android 应用程序和 iOS 应用程序,这两个应用程序的 xpath 选择器是不同的。我想我需要做这样的事情:

这意味着无论我使用的是 Android 还是 iOS,我仍然只使用一个名为“verifyTitle”的变量。

但是,当我这样做时, driver.findElement 行 (String actualTitle = driver.findElement(verifyTitle).getText() 显示以下错误:

我想我正在将 AppiumElements 与 SeleniumElements 进行比较,但我不确定如何解决它。

任何帮助将不胜感激。

谢谢

马特

0 投票
1 回答
209 浏览

selenium - 尝试使用 pagefactory 处理 POM 中的 webtable 但抛出错误

强文本我试图使用 pagefactory 处理 POM 中的 webtable 但它的抛出错误

如果我尝试直接粘贴 xpath,否则它不起作用

它在 WebElement actual_xpath = before_xpath +i +actual_xpath; 上引发错误。

其显示 运算符 + 未定义参数类型 WebElement, int

所以我可以处理这个

0 投票
4 回答
7063 浏览

java - 如何使用 Selenium 和 Java 通过 PageFactory 等待元素不可见

有没有办法使用 PageFactory 注释等待 Selenium 中不存在的元素?

使用时:

定位元素,然后:

我会得到:

我可以通过以下方式做我需要的事情:

但是,我希望能够使用 PageFactory 注释以保持框架的一致性。有没有办法做到这一点?

0 投票
3 回答
600 浏览

java - 在初始化页面对象期间,我在 pagefactory 中缺少什么?在元素识别期间获取 NullpointerException

我已经设置了页面对象模型并尝试使用 PageFactory 初始化 Web 对象。

我已经在 testBase 中初始化了我的驱动程序,并将页面类扩展到这个 testbase。当我尝试运行我的测试用例时,会抛出以下 nullpointerexeception

TestBase.java

下面的代码是实际的测试类,它从页面类调用适当的函数和变量

下面是上述测试的页面类

一旦焦点转向此块,我就会收到以下错误消息

0 投票
2 回答
197 浏览

c# - 从设计 C# 中删除 PageFactory

我们有一个现有的 C# UI 自动化框架,并且基于我们使用 PageFactory 初始化页面文件中的元素时的知识。最近我阅读了有关该主题的更多内容,并且在 C# 中使用 PageFactory 似乎没有真正的好处,因此我尝试使用字段来重写页面。我现在遇到的一件事是让我的扩展方法起作用。

例如:在当前实现中,我有一个这样标识的元素: [FindsBy(How = How.LinkText, Using = "Authenticate")] private IWebElement BstHomePageHeader;

有一个辅助方法可以检查元素在某些情况下是否存在,并且在测试中这样调用它:

home.getBstHomePageHeader().DoesElementExist().Should().BeTrue("用户没有被带到主页。"​​);

“DoesElementExist”方法中的代码应用了 5 秒等待,不断验证 element.Displayed 检查,它忽略了 NoSuchElementException、ElementNotVisibleExpection 和 WebDriverTimeoutException。如果元素在 5 秒内未返回,则向主调用返回 false 并抛出流畅的断言消息。

当我删除 PageFactory 时,现在创建的元素如下所示(在同一页面文件中): public IWebElement getBstHomePageHeader => driver.FindElement(By.LinkText("Authenticate"));

如果我尝试对它应用相同的辅助方法,如下面的代码行的 DoesElementExist 部分不再适用。NoSuchElementException 直接在我的页面文件中抛出,因此不会返回流利的断言消息。home.getBstHomePageHeader.DoesElementExist().Should().BeTrue("用户没有被带到主页。"​​);

在非 PageFactory 设计中是否可以不让页面类抛出 NoSuchElementException 以便测试可以处理失败?

0 投票
1 回答
515 浏览

java - 当我尝试在 selenium 中通过 WebTable 时,总是给我的行数为 0

测试用例类

HTML:

000010 阿巴斯18720-9298862-8

1/22/2019 伊斯兰堡 000010 abbas18720-9198862-8

1/22/2019 伊斯兰堡 000010 abbas18721-9212843-8

1/22/2019 伊斯兰堡 000010 abbas18721-9223130-8

1/22/2019 伊斯兰堡 000010 abbas18721-9223140-8

1/22/2019 伊斯兰堡 000010 abbas18721-9298862-8

1/22/2019 伊斯兰堡 000010 abbas18721-9223110-8

1/22/2019 伊斯兰堡 000010 abbas18721-9223813-8

1/22/2019 伊斯兰堡 000010 abbas18721-9298843-8

1/22/2019 伊斯兰堡 000010 abbas18721-9223810-8

1/22/2019 伊斯兰堡

尽管表中有超过 10 行,但它始终返回 Row size=0 但我无法获得行大小,因此我无法执行测试。我已经通过 xpath、css 选择器和标记名进行了尝试,但是当我打印 row.size(); 时在行结果中没有返回任何内容;

请帮我解决这个问题。

0 投票
1 回答
1011 浏览

java - Selenium PageObject 抛出调用目标异常

我正在尝试为 Web 应用程序创建一个框架(Selenium+TestNg+java)(环境是 MacOs+ChromeDriver,驱动程序服务器在 \usr\local\bin 中)但陷入了基本结构。我有一个启动浏览器的类(Driversetup.java),另一个包含 WebElements 和方法(ProfileUpdateObjects.java),第三个包含测试方法。现在,当我尝试运行这个只有一个方法的 TestNG 类时,我得到了以下异常。

下面是代码(所有类都在不同的包中)。

ProfileUpdateObject 类的代码

DriverSetup.java

它在 pu.navigateProfile() 调用中失败。此外,与 driver.find() 语法相比,@FindBy 是否确实占用了更多内存,并且除了 POM 之外,还有其他自动化框架的设计原则,因为 Web 上的大多数资源都是 POM 的一种或另一种实现。

0 投票
1 回答
4779 浏览

java - 如何通过 Selenium 和 Page Factory 实现 AjaxElementLocatorFactory?

我使用 Pagefactory 在 Selenium 中设置了我的所有页面。问题是测试是动态的,因为某些元素仅存在于某些测试中。从我理解 AjaxElementFactory 的工作原理是这样的:

但是,如果元素 OwnershipIndividual 未在 5 秒内找到,则会抛出 NoSuchElementException。我的问题是,尽管我已将超时设置为 5 秒,但仍需要 50-60 秒才能超时。这是为什么?

0 投票
1 回答
288 浏览

appium-ios - 在 Appium iOS 自动化中使用时,PageFactory 似乎很慢

我们正在使用 Appium 自动化一个 react-native iOS 应用程序。我们正在使用 PageFactory 设计模式。对于单击元素,这是正在使用的代码:

  1. 等待元素可见。
  2. 单击元素

整体执行似乎花费了太多时间。根据我的理解,waitUntilVisible 会等到元素的 isDisplayed() 变为真。
当我们使用 PageFactory 时,我假设元素识别发生了两次。
1. 在检查可见性之前首先识别元素。
2、点击前会再次识别相同的元素。

由于我们在很多领域都使用xpath,因此元素识别通常需要更长的时间。对于一个简单的点击,相同的元素被识别两次,这进一步增加了时间。

我想知道存储已识别元素的任何解决方案,以便它不会花时间再次识别它。

所以我修改了我的代码,如下所示:

这种方法似乎不节省时间。

我有没有其他方法可以减少执行时间。

注意:我们使用 WebElement 而不是 IOSElement,以便在桌面自动化中使用的相同代码也可以在 IOS 自动化中使用。

0 投票
1 回答
60 浏览

java - 硒页面工厂未捕获的下拉值

以下是我@findby的方法注释,有助于获取值:

获取错误:

NoSuchElementException:无法找到具有值的选项:xyz