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

如何在导航栏中单击并从selenium java中的列表中选择项,java,selenium-webdriver,Java,Selenium Webdriver,我试过这个 List <WebElement> navlist = driver.findElements(By.cssSelector("d-md-down-none nav navbar-nav mr-auto")); navlist.get(0).findElement(By.linkText("Sources")).click(); 如何在导航栏中单击并根据您提供的HTML和代码试用从selenium java的列表中选择项目您可以使用以下代码块从列表中选择并单击文本作为源

我试过这个

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

如何在导航栏中单击并根据您提供的HTML和代码试用从selenium java的列表中选择项目您可以使用以下代码块从列表中选择并单击文本作为源的项目:

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;
        }

您收到错误是因为您的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();

它可能工作,也可能不工作,这取决于页面上有多少其他源链接以及它们所在的位置。

如果线程main java.lang.IndexOutOfBoundsException中存在任何异常,请使用代码试用结果和错误堆栈跟踪更新问题。IndexOutOfBoundsException:Index:0,大小:0位于java.util.ArrayList.rangeCheckUnknown Source位于java.util.ArrayList.getUnknown Source位于Adding_new_Source.new_Source.mainNew_Source.java:53您需要使用此信息更新主要问题以进行适当的分析。您能告诉我navlist.Size的值吗?@cruisepandey>尝试了上述方法,错误消息:找不到这样的元素。如果找不到这样的元素,请参阅本讨论。我修复了代码,现在我使用上述代码尝试定位特定的源元素,在我的控制台中没有错误消息,因此我在插入上述代码后打印了其中断位置和中断位置。源选择错误您何时遇到源选择错误?您是否单击下拉列表以展开以便能够创建列表?是的,我单击了,可能是因为列表也在导航栏中?什么不起作用?您收到了什么错误消息或发生了什么?我发布的另一种方式呢?我发布的第一种方式呢?结果如何?你确定这些元素不在IFRAME中吗?它在一个普通的html正文中没有IFRAME,尽管在我访问这个url之前,还有另一个屏幕验证,它有一个IFRAME,我已经进入了,现在我从它出来进入这个新的html正文,但它没有IFRAME。我尝试了第一种方法,它也给了我一个没有这样的元素错误这是我的代码,在我使用你的代码之前,我只是给你上一个iframe>driver.findElementBy.idlogin-button.click的上下文;driver.switch to.framedriver.findElementBy.idduo_iframe;;WebDriverWait wait=新的WebDriverWaitdriver,10;WebElement button=wait.until ExpectedConditions.elementToBeClickableBy.cssSelector.positive.auth按钮[type='submit'];按钮。点击;您是否执行过driver.switchTo.defaultContent?这可能就是问题所在。将代码和任何其他细节添加到您的问题中,以便每个人都能看到。
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;
        }
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();