如何在导航栏中单击并从selenium java中的列表中选择项目

时间:2018-05-07 10:55:15

标签: java selenium-webdriver

我试过这个

StartCopyAsync

以下是HTML代码:

List <WebElement> navlist = driver.findElements(By.cssSelector("d-md-down-none nav navbar-nav mr-auto"));
navlist.get(0).findElement(By.linkText("Sources")).click();

尝试我的示例时出错:

<ul class="d-md-down-none nav navbar-nav mr-auto">
    <li class="px-3 nav-item">
        <a aria-disabled="false" href="#/sources" class="nav-link">Sources</a>
    </li>
    <li class="px-3 nav-item">
        <a aria-disabled="false" href="#/alerts" class="nav-link">Alerts</a>
    </li>
</ul>

如何在导航栏中单击并从selenium java中的列表中选择项目

2 个答案:

答案 0 :(得分:0)

根据您提供的HTML和代码试用版,您可以选择并使用以下代码块从列表中单击文本为来源的项目:

List <WebElement> navlist = driver.findElements(By.cssSelector("ul.d-md-down-none.nav.navbar-nav.mr-auto li>a"));
for(WebElement elem:navlist)
    if(elem.getAttribute("innerHTML").contains("Sources"))
        {
            elem.click();
            break;
        }

答案 1 :(得分:0)

您收到错误是因为您的CSS选择器不正确。您已列出了类名,但类之前应为.,例如.className。代码的等价物是

List <WebElement> navlist = driver.findElements(By.cssSelector(".d-md-down-none.nav.navbar-nav.mr-auto"));
navlist.get(0).findElement(By.linkText("Sources")).click();

你有没有尝试过更简单的

driver.findElement(By.linkText("Sources")).click();

根据页面上有多少其他“来源”链接及其位置,它可能会也可能不会起作用。