另一个findElement中的Selenium findElement

时间:2013-08-06 05:45:37

标签: selenium webdriver selenium-webdriver pageobjects

例如,我找到了element2后可以找到的element1,如下所示:

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();

2 个答案:

答案 0 :(得分:0)

嗯,你有几个解决方案。

第一个,如果你想使用2个FindBys:

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

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

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

最后,您可以将第一个xpath和第二个路径合并为一个xpath

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

然而,我想你可能会问这个,因为你有一个单元素,你想在其中发现很多其他元素。不幸的是,严格的@FindBy是不可能的。

答案 1 :(得分:0)

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

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

使用

element2.click();