是否可以组合/连接两个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)
USECASE:
我们使用页面对象模型。
现在我有一个表作为子页面对象模型。该表应该有一个选择一些数据的方法。由于一些html结构问题(它是第三方),我必须通过检查一个单元格的类和该单元格的文本/内容来xpath一个div(行)的子表。 / p>
答案 0 :(得分:5)
您有两种选择:
您可以执行以下操作:
WebElement parentEl = driver.findElement(By.xpath(""))
WebElement childEl = parentEl.findElement(By.className(""))
使用PageFactory @FindBys
。请参阅Selenium PageFactory和Selenium API。
答案 1 :(得分:3)
除了@SiKing所说的,我还建议查看ByChained
类(有关javadocs,请参阅here)。
如何使用它的示例:
driver.findElements(new ByChained(By.id("product-table"), By.className("quantity")));
不确定这是否直接解决了OP的问题,但仍然非常有用。