如何使用Selenium(Java)By与现有元素

时间:2017-05-26 16:29:04

标签: java selenium

我正在尝试使用以下selenium来查找父元素中的子元素,这非常有效

ExpectedConditions.presenceOfNestedElementLocatedBy(parent, By.xpath(xpath))

现在我想要一个返回所有与xPath匹配的元素的方法,但是,令我惊讶的是签名需要By而不是WebElement I would expect

如何将我的WebElement转换为by来获取其他元素?

2 个答案:

答案 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));

希望这会对你有所帮助。感谢。