具有通配符

时间:2017-10-12 22:26:07

标签: java selenium selenium-webdriver pageobjects page-factory

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

例如,这是我生成的id:

Function:TableName:0:submenuAction

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

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

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

1 个答案:

答案 0 :(得分:2)

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

private final static int ITEM_INDEX = 2;

...

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

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

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

...

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