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

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

使用 for 循環嵌套下拉列表會導致過時的元素引用錯誤

使用 for 循環嵌套下拉列表會導致過時的元素引用錯誤

瀟瀟雨雨 2021-06-01 13:53:40
我想知道如何使用 java 使用 selenium webdriver 嵌套下拉列表,即,我有 2 個下拉列表,這些下拉列表可以一個接一個嵌套嗎?在為下拉列表循環 2 次后,它顯示過時的元素引用錯誤我編寫了以下代碼:Select drpdwns6 = new Select(driver.findElement(By.xpath("//*[@id=\"MainContent_ddlBillable\"]")));List <WebElement> sels6 = drpdwns6.getOptions();sels6.size();for(int s6=0;s6<sels6.size();s6++) {    drpdwns6.selectByIndex(s6);    System.out.println("selected value"+s6);    Select drpdwns7 = new Select(driver.findElement(By.xpath("//*[@id=\"MainContent_ddlofflinestatus\"]")));    List <WebElement> sels7 = drpdwns7.getOptions();    sels7.size();    for(int s7=0;s7<sels7.size();s7++) {        drpdwns7.selectByIndex(s7);        System.out.println("selected value"+s7);    }}
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

每當 DOM 中存在的元素被刪除或移除或不可用時,您都會收到 Stale 元素異常。


上面的答案(即)在 DOM 刷新后重新定位元素,或者您可以使用 Webdriver 等待,如果元素未附加到 DOM,則您可以嘗試在“for 循環”中使用“try-catch 塊”,如下所示


driver.manage().timeouts().implicitlywait(30,TimeUnit.SECONDS);

try{

Select drpdwns6 = new 

Select(driver.findElementByXpath("//[@id=\"MainContent_ddlBillable\"]")));

List <WebElement> sels6AllOptions = drpdwns6.getOptions();

int count1=sels6AllOptions.size();

for(int s6=0;s6<count1;s6++) 

{

drpdwns6.selectByIndex(s6);

}

catch(StaleElementException e1){

System.out.println("selected value"+s6);

}

try{

Select drpdwns7 = new Select(driver.findElement(By.xpath("//*[@id=\"MainContent_ddlofflinestatus\"]")));


List <WebElement> sels7AllOptions = drpdwns7.getOptions();

int count2=sels7AllOptions.size();

for(int s7=0;s7<count2;s7++) {

    drpdwns7.selectByIndex(s7);

    catch(StaleElementException e2){


    System.out.println("selected value"+s7);

  }

  }


查看完整回答
反對 回復 2021-06-10
  • 2 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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