Selenium Java - 如何选择没有ID的下拉元素

时间:2016-10-25 22:50:38

标签: java selenium selenium-webdriver ui-automation selenium-chromedriver

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

尝试使用Java从下拉菜单中选择项目时,由于错误消息,我无法执行此操作。请注意,我尝试过选择和WebElement选项的变体,但没有预期的结果:点击下拉菜单中的链接,该链接应该带我到目标页面。

以下是eclipse中显示的错误消息:

线程中的异常" main" org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{"方法":"链接文本","选择器":"付款"}

以下是相关的代码段:

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的片段如下所示:

code segment

希望得到反馈。

谢谢。

1 个答案:

答案 0 :(得分:0)

正如我在提供的屏幕截图HTML中看到的那样,这不是<select>元素,因此您无法在此处使用Select()类来处理下拉列表。

您应该尝试使用WebDriverWait的简单查找程序,如下所示: -

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();