提问者:小点点

SeleniumJava-如何选择没有ID的下拉列表元素


我使用Selenium-JavaWebDriver(ChromeDriver)作为新用户。

当尝试使用Java从下拉框中选择一个项目时,由于错误消息,我无法做到这一点。请注意,我已经尝试了Select和WebElement选项的变体,但没有得到预期的结果:单击下拉菜单中应该将我带到目标页面的链接。

这是eclipse中显示的错误消息:

线程“main”org. openqa.selenium.NoSuchElementException中的异常:没有这样的元素:无法定位元素:{"method":"link text","selector":"Payment"}

这是相关的代码段:

Select dropdown2 = new Select(webDriver.findElement(By.linkText("Payment")));
dropdown2.selectByVisibleText("Payment");

我还尝试了以下方法,但没有成功:

WebElement element = webDriver.findElement(By.cssSelector("a[class='glyphicon glyphicon-credit-card']"));
element.click();

此外,以下代码不起作用:

WebElement element = webDriver.findElement(By.partialLinkText("Payment"));
Select mySelect= new Select(element);
mySelect.selectByVisibleText("Payment");

html的片段如下所示:

希望得到反馈。

谢谢你。


共1个答案

匿名用户

正如我在提供的屏幕截图超文本标记语言中看到的,这不是

您应该尝试将简单的finder与WebDriver等一起使用,如下所示:-

WebDriverWait wait = new WebDriverWait(driver,10);

//First click on dropdown down to open options
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("li.dropdown > a.dropdown-toggle"))).click();

//Now select opened option
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("ul.dropdown-menu > li > a[href*='Billing']"))).click();

或者

wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Payment"))).click();

或者

wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Payment"))).click();