Selenium:使用节点名称作为字符串打开jstree节点

时间:2019-02-20 11:31:54

标签: java selenium selenium-webdriver cucumber

我正在尝试使用节点名称自动执行一些测试以打开Jstree节点 我想使其单击节点左侧的箭头,而不是双击节点本身。 这是代码

public void abrirSistema(String node) {
    Boolean isPresent = driver.findElements(By.xpath("//*[contains(text(),'" + node + "')]")).size() > 0;
    if (isPresent) {
        System.out.println("System está abierto");
    } else {
        System.out.println("Hay que abrir el sistema");
        WebElement system = driver.findElement(By.xpath("//*[contains(text(),'" + node + "')]"));
        WebElement parent = system.findElement(By.xpath(".."));
        String parentId = parent.getAttribute("id");
        WebElement flecha = driver.findElement(By.xpath("//*[@id=\"" + parentId + "\"]/i"));
        // WebElement arrow = parent.findElement(By.className("jstree-icon"));
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        js.executeScript("arguments[0].scrollIntoView(true);", arrow);
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        wait.until(ExpectedConditions.visibilityOf(flecha));
        wait.until(ExpectedConditions.elementToBeClickable(flecha)).click();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

因此,基本上我按名称定位Node,使树上的元素动态变化,然后选择箭头,然后单击它。 问题是,有时代码有效,有时却无效,我无法弄清原因。 在尝试运行此页面之前,我确保页面已满载,并且在运行场景时,此步骤始终为绿色,但未打开节点 我也想让您知道,此代码始终在打开根节点后运行,直到正常工作为止。以防万一

希望有人可以帮助我。 预先感谢

0 个答案:

没有答案