为了账号安全,请及时绑定邮箱和手机立即绑定

Selenium 自动化 - 如何从此列表中选择下拉菜单项而不会出现异常错误?

Selenium 自动化 - 如何从此列表中选择下拉菜单项而不会出现异常错误?

眼眸繁星 2022-10-26 15:51:18
我想从网页下方的下拉菜单中选择一个下拉菜单项:带有菜单项的下拉菜单下拉菜单的 HTML 代码菜单项的 HTML 代码我尝试了以下 3 种方法来选择带有文本“Test”(索引 [1])的项目:情况1:   driver.findElement(By.id("combo-1781-inputEl")).click();    driver.findElement(By.id("combo-1781-inputEl")).sendKeys("Test");没有出现错误(测试通过)。但“测试”项目文本未显示在下拉菜单字段中。案例二:     driver.findElement(By.id("combo-1781-inputEl")).click();      Select drp = new Select(driver.findElement(By.id("boundlist-1930-listEl")));      drp.selectByVisibleText("Test");org.openqa.selenium.support.ui.UnexpectedTagNameException 被抛出。测试失败。案例3:    Select drp = new Select(driver.findElement(By.id("boundlist-1930-listEl")));     drp.selectByIndex(1);org.openqa.selenium.support.ui.UnexpectedTagNameException 被抛出。测试失败。
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以首先使用以下方法单击下拉元素:

driver.findElement(By.id("combo-1781-inputEl")).click();

然后您可以使用以下命令单击“测试”元素:

driver.findElement(By.xpath("//div[@id='boundlist-1930-listEl']//li[text()='Test']")).click();

您还可以在此处参数化“测试”文本,以便将来如果您想单击任何其他下拉值,您可以在 xpath 中发送该文本然后单击它,您可以这样做:

String text="Test";
driver.findElement(By.xpath("//div[@id='boundlist-1930-listEl']//li[text()="+text+"]")).click();


查看完整回答
反对 回复 2022-10-26
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

如您的代码所示,具有 id 的元素boundlist-1930-listEl不是<select>节点。这就是为什么UnexpectedTagNameException被抛出。


要从这种下拉列表中选择项目,您需要首先使下拉列表可见,我假设通过单击<input>元素。然后您必须等待列表显示,然后单击要选择的项目。


尝试这个:


WebDriverWait wait = new WebDriverWait(driver,30);


driver.findElement(By.id("combo-1781-inputEl")).click();


wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("div#bounddlist-1930-list > ul"))));


driver.findElement(By.xpath("//div[@id='bounddlist-1930-list']/ul/li[contains(text(),'Test')]")).click();




查看完整回答
反对 回复 2022-10-26
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号