0

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

例如,这是我生成的 id:

Function:TableName:0:submenuAction

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

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

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

4

1 回答 1

3

无论您传入什么,都可能必须是一个常量(例如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);
}
于 2017-10-13T14:12:27.497 回答