Selenium webdriver 如何使用selenium页面工厂为单个页面初始化不同的web元素?

Selenium webdriver 如何使用selenium页面工厂为单个页面初始化不同的web元素?,selenium-webdriver,pageobjects,Selenium Webdriver,Pageobjects,我的页面有按钮、文本框和选择元素。但是当使用PageFactory.initElements(驱动程序,MyPage.class)初始化页面对象时,除了Select元素之外,所有元素都会初始化 我在某个地方读到,这可以通过FieldDecorator或ElementLocatorFactory实现。但我不知道如何使用它们 这个需要帮助 从variabe声明中删除Select类,并添加WebElement。它将由pagefactory.initelements调用初始化 然后使用Select=ne

我的页面有按钮、文本框和选择元素。但是当使用PageFactory.initElements(驱动程序,MyPage.class)初始化页面对象时,除了Select元素之外,所有元素都会初始化

我在某个地方读到,这可以通过FieldDecorator或ElementLocatorFactory实现。但我不知道如何使用它们

这个需要帮助


从variabe声明中删除Select类,并添加WebElement。它将由pagefactory.initelements调用初始化 然后使用Select=new Select(服务);在与该元素交互的代码中

还有一件事,作为一种编码约定,变量名通常是大写的。类名以大写字母开头


改进你的一些XPath,如TransactionMounts、评论等,如果开发者对你的网页DOM做了一点小小的更改,它们可能会失败。当您拥有ID时,将其用作定位器,而不是xpath。假设id是唯一的,开发人员应该确保该id是唯一的。

使用WebElement而不是Select来解决它。我已经用过了。但是我想直接获得Select对象,而不是从web元素创建Select对象。关于代码约定,你是对的。但是直接在XPath中使用ID会导致元素NotVisible异常。这就是我为什么这样使用它们的原因。看看这个。它是通过扩展FieldDecorator实现的。应该直接工作,或者您可能需要修改它。尝试将所有Select操作移动到一个单独的类中,您可以从pageobject调用该类。关于ID不可见的元素,这很奇怪。当您直接从浏览器中使用ID时,ID是否工作。这似乎很复杂。