3

是否可以组合/连接两个 Bys?

如果我有一个By

By parentBy = new By.xpath(".//div[@class='parent']")

和另一个By

By childBy = new By.xpath(".//div[@class='child']")

是否可以将两个 Bys 连接到具有此 xpath 的新 Bys?

By combinedBy = new By.xpath(".//div[@class='parent']/div[@class='child']")

就像是

By combinedBy1 = parentBy + childBy
By combinedBy2 = parentBy.Concat(childBy)

用例:

我们使用页面对象模型。

现在我有一个表作为子页面对象模型。这个表应该有一个方法来选择一些数据。由于一些 html 结构问题(它是第三方),我必须通过检查单元格的类和该单元格的文本/内容来对作为 div(行)的子表的单元格进行 xpath。

4

2 回答 2

8

除了@SiKing 所说的之外,我还建议您查看该ByChained课程(有关 javadocs,请参见此处)。

如何使用它的示例:

driver.findElements(new ByChained(By.id("product-table"), By.className("quantity")));

不确定这是否直接解决了 OP 的问题,但仍然非常有用。

于 2016-05-23T12:52:33.447 回答
5

你有两个选择:

  1. 您可以执行以下操作:

    WebElement parentEl = driver.findElement(By.xpath(""))
    WebElement childEl = parentEl.findElement(By.className(""))
    
  2. 使用 PageFactory @FindBys。请参阅Selenium PageFactorySelenium API

于 2014-06-13T14:50:01.667 回答