我試圖自動化一個方案,其中的條件是我必須選擇所有的下拉選項,我必須逐個單擊該選項。我嘗試了代碼,但它只點擊第一個選項,並顯示錯誤爲陳舊元素不可點擊。 請幫忙。硒webdriver中的陳舊元素異常
0
A
回答
0
StaleElementException
發生如果我找到一個元素,DOM得到更新,然後我嘗試與元素進行交互。
那麼我該如何處理呢?使用下面的方法點擊試圖單擊元素多次:
public boolean retryingFindClick(By by) {
boolean result = false;
int attempts = 0;
while(attempts < 2) {
try {
driver.findElement(by).click();
result = true;
break;
} catch(StaleElementException e) {
}
attempts++;
}
return result;
}
採取了這種外觀極好的解決方案,從here。
0
當你從下拉菜單中選擇一個選項時,你的DOM也會得到更新。所以,你也需要更新你的對象。請參閱示例代碼片段:
Select select = new Select(driver.findElement(By.cssSelector("your dropdown's locator"))); // you may use any locator of your choice
List<WebElement> options = select.getOptions();
for(WebElement option : options){
select.selectByVisibleText(option.getText());
//re-assign your select object since your page has been reloaded after selecting an option
select = new Select(driver.findElement(By.cssSelector("your dropdown's locator")));
}
+0
試過這一個,但顯示相同 – Test
您應該確保頁面已加載並且所有請求都已完成,之後您可以搜索您的元素。 – lauda
你使用POM嗎?如果是的話,我可以提出一些建議。 –
是的,請告訴我 – Test