亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號