阴影根-在几个阴影根下单击href

时间:2018-09-11 12:44:19

标签: java selenium selenium-webdriver shadow-dom

我有几个shadowRoots内部的链接列表。已经解决了这个问题。

public WebElement expandRootElement(WebElement element) {
    WebElement ele = (WebElement) ((JavascriptExecutor) driver).executeScript("return arguments[0].shadowRoot",element);
    return ele;
}

WebElement root5_adminPanel = shadowRoot4_MduiContainerChild2.findElement(By.cssSelector("#layout > border-layout > ng-view > admin-panel"));
WebElement shadowRoot5_AdminPanel= expandRootElement(root5_adminPanel);

WebElement root6_breadCrumb = shadowRoot5_AdminPanel.findElement(By.cssSelector("#layout > border-layout > breadcrumb"));
WebElement shadowRoot6_breadCrumb = expandRootElement(root6_breadCrumb);

WebElement root6_domainPanel = shadowRoot5_AdminPanel.findElement(By.cssSelector("#layout > border-layout > ng-view > gdsr-domain-panel"));
WebElement shadowRoot6_domainPanel = expandRootElement(root6_domainPanel);

WebElement root7_selectDomain = shadowRoot6_domainPanel.findElement(By.cssSelector("#domainContainer > domain-panel-item.ng-binding.last"));
WebElement shadowRoot7_selectDomain = expandRootElement(root7_selectDomain);

到达此shadowRoot7时,我有一个具有相同名称的项目列表,我已经创建了一个列表来对其进行修复。

List<WebElement> rows_table = shadowRoot6_domainPanel.findElements(By.cssSelector("#domainContainer > domain-panel-item:nth-child(n)"));

(它们大约有45种)

这将选择所有它们,在本例中是所有domain-panel-item行。

我的问题是,每个域面板项目仍包含另一个shadowRoot(所有路径均相同),我想选择一个随机项目,而不是第一个或最后一个,例如项目编号43

enter image description here

我的解决方案是此解决方案,但它无法正常工作,因为它无法访问我想要的链接:

public void clickSelectedDomain(String domain) {
    List<WebElement> rows_table = shadowRoot6_domainPanel.findElements(By.cssSelector("#domainContainer > gdsr-domain-panel-item:nth-child(n)"));

    int rows_count = rows_table.size();

    for (int row=0; row<rows_count; row++) { 
        if(rows_table.get(row).getAttribute("href").contains(domain)) {
            rows_table.get(row).click();
        }
    }
}

有些人知道如何解决此问题?

0 个答案:

没有答案