java - 带通配符的 Pagefactory 动态 WebElement

标签 java selenium selenium-webdriver pageobjects page-factory

我动态生成的定位器取决于将从列表中选择哪个元素。

例如,这是我生成的 ID:

Function:TableName:0:submenuAction

0 是计数器,表示从列表中选择第一个元素。计数器前后的所有字符串都不会改变,所以从开始,包含xpath的方法不起作用。

我可以使用一些通配符吗 Function:TableName:{X}:submenuAction {x} 是整数。

我可以存储所选的元素数量,但如何在 pagefactory 元素内使用此变量? driver.findelement 可能会因 staleElementException 失败,这就是我想使用 PageFactory 的原因。

最佳答案

无论你传入什么,都可能必须是一个常量(例如 Java 中的 final static )才能在 PageFactory 中使用。注释。

private final static int ITEM_INDEX = 2;

...

@FindBy(xpath="Function:TableName:"+ ITEM_INDEX + ":submenuAction")
private WebElement targetListItem;

除了评论中提到的一些过时检查策略之外,您可能还想尝试将所有这些动态标识的元素绑定(bind)到集合(例如 List<WebElement> ),然后在以下位置建立索引:

@FindBy(xpath="...")
private List<WebElement> allListEntries;

...

private WebElement getTargetListEntry(int index) {
    return allListEntries.get(index);
}

关于java - 带通配符的 Pagefactory 动态 WebElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719814/

相关文章:

java - 版本升级后异常

java - 在加密交换中打印调试值

java - 应用程序 : webview : selenium : How to automate touchend event on a div?

python - 如何使用 Python 使用 Selenium 选择下拉菜单值?

selenium-webdriver - vue-cli3 + Electron + chromedriver + selenium-webdriver找不到元素

css - 如何仅根据这些超链接对应的图像颜色获取网页上的超链接列表?

java - 无法弄清楚如何将回溯合并到我的伪递归方法中

python - 使用 id、xpath、class 等单击按钮时遇到问题

python - 使用 selenium 和 google colab 抓取 youtube 评论很慢

java - Springboot测试如何将controller的参数解析为对象