gpt4 book ai didi

selenium - 使用聚合物 2 刺穿阴影 dom 进行测试自动化(/deep/已弃用)

转载 作者:行者123 更新时间:2023-12-04 16:05:20 25 4
gpt4 key购买 nike

目前,我的组织正在使用带有 Selenium、Protractor 和 Mocha 的 Polymer 1,我们使用 shady dom。对于验收测试,我们使用 /deep/组合器刺穿DOM .使用聚合物 2 /deep/组合器已弃用。

我的问题 : 写验收测试的时候,我该怎么戳破阴影DOM如果使用/deep/组合器已弃用?

最佳答案

在互联网上进行了大量研究后,我想出了一种对我来说效果很好的解决方案。

我遵循的步骤:

  • 使用 chrome 开发者工具查找 JS 路径。
  • 创建一个包含所有所需阴影的字符串数组,以遍历直到目标节点; 3. 可重用函数将返回将目标元素作为子元素的父元素。
  • 使用目标元素的 CSS 路径执行操作。

  • 请参阅以下代码:
    String[] shadowRootCalender = {"tickets-spa","tickets-config-page","#calendar"};
    String date="2019-04-16";
    FindShadowRootElement(driver, shadowRootCalender).findElement(By.cssSelector("wdat-date[slot='"+date+"']")).click();


    public static WebElement FindShadowRootElement(WebDriver driver, String[] shadowRootSelector) {
    WebElement root = null;
    for(int i=0; i<shadowRootSelector.length; i++) {
    if(i==0) {
    isjQueryLoaded(driver);
    root = (WebElement)((JavascriptExecutor)driver).executeScript("return document.querySelector(arguments[1]).shadowRoot", root, shadowRootSelector[i]);
    }else {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    root = (WebElement)((JavascriptExecutor)driver).executeScript("return arguments[0].querySelector(arguments[1]).shadowRoot", root, shadowRootSelector[i]);
    }
    }
    return root;
    }


    public static void isjQueryLoaded(WebDriver driver) {
    // System.out.println("Waiting for ready state complete");
    (new WebDriverWait(driver, 30)).until(new ExpectedCondition<Boolean>() {
    public Boolean apply(WebDriver driver) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    String readyState = js.executeScript("return document.readyState").toString();
    //System.out.println("Ready State: " + readyState);
    return (Boolean) js.executeScript("return !!window.jQuery && window.jQuery.active == 0");
    }
    });
    }

    关于selenium - 使用聚合物 2 刺穿阴影 dom 进行测试自动化(/deep/已弃用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46473567/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com