0

例如,我有一个 element1,我找到 element2 后可以找到它,如下所示:

driver.findElement(By.xpath("//xpath2")).findElement(By.xpath("//xpath1")).click();

我想使用 PageObjectModel 和注释 @FindBy,如下所示:

@FindBy(xpath = "//xpath1")
private WebElement element1;

@FindBy(xpath = "//xpath2")
private WebElement element2;

问题:我不知道如何重写代码,这不起作用:

element2.element1.click();
4

2 回答 2

0

好吧,你有几个解决方案。

首先,如果你想使用 2 FindBys 是:

@FindBys({@FindBy(xpath = "//xpath2"),
       @FindBy(xpath = "//xpath1")})

第二种是将第二个xpath代码放在显式的findElement函数中

element1.findElement(By.xpath("//xpath1")).click();

最后,您可能可以将第一个 xpath 和第二个 xpath 组合成一个 xpath

@FindBy(xpath="//xpath2//xpath1")

但是,我想您可能会问这个问题,因为您有一个元素,您喜欢在其中找到许多其他元素。不幸的是,这对于严格的@FindBy 是不可能的。

于 2013-08-06T07:01:40.093 回答
0
@FindBy(xpath = ".//xpath1")
private WebElement element1;

@FindBy(xpath = ".//xpath2//xpath1")
private WebElement element2;

利用

element2.click();
于 2013-08-06T07:22:15.797 回答