我正在尝试使用以下selenium来查找父元素中的子元素,这非常有效
ExpectedConditions.presenceOfNestedElementLocatedBy(parent, By.xpath(xpath))
现在我想要一个返回所有与xPath匹配的元素的方法,但是,令我惊讶的是签名需要By
而不是WebElement
I would expect。
如何将我的WebElement转换为by来获取其他元素?
答案 0 :(得分:0)
以下是通过BY
传递所有子元素的示例:
public class Demo {
static WebDriver driver;
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver", "c:\\eclipse\\selenium\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://google.com");
By x = By.xpath("//div"); //or your By.xpath(xpath)
List<WebElement> allItem = getChildElements(x);
System.out.println(allItem.size());
for(WebElement item : allItem){
System.out.println(item.getText());
}
}
public static List<WebElement> getChildElements(By x){
List<WebElement> allElems = driver.findElements(x);
return allElems;
}
}
答案 1 :(得分:0)
尝试进行类投射并继续。代码看起来与此类似。
WebElement parent = driver.findElement(By.xpath(""));
WebElement child = driver.findElement(By.xpath(""));
new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfNestedElementLocatedBy(parent, (By)child));
希望这会对你有所帮助。感谢。