以前審查過有關此問題的帖子,但問題仍然存在。 http://preview.harriscountyfws.org/是一個公共站點,屬於這個問題。Selenium Webdriver使用Java的ElementNotVisibleException
我試圖點擊一個下拉菜單並從Rainfall下拉列表中選擇「Channel Status」。
我得到以下錯誤:
Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: element not visible: Element is not currently visible and may not be manipulated
我附上的代碼截圖,但你也可以訪問該網站,按F12
看代碼。
這裏是我的基礎上,研究當前的代碼到目前爲止,我已經做了:
Select dropdown = new Select(driver.findElement(By.id("siteType")));
WebElement triggerDropDown = driver.findElement(By.className("k-i-arrow-s"));
triggerDropDown.click();
dropdown.selectByVisibleText("Channel Status");
dropdown.selectByIndex(1);
顯示工作(dropdown.select ...) 兩種結果ElementNotVisibleException
最後兩個代碼語句都不是。
這是不正確的,因爲通過按triggerDropDown.Click()
,選擇是可見的!
更好。我會一直等到我接受答案,因爲其他人可能會回覆,我想看看我們都可以瞭解這一點。我的懷疑,我可能是錯誤的,也許屏幕分爲面板,你必須以某種方式選擇一個或另一個面板,以便能夠使該面板中的組件「可見」 –
JeffC。在你的第二行,你會說「driver.findElement(By.cssSelector(」span.k-widget.kdropdown.k-header「))。click。它只是找到第一個出現的地方?現在我已經準備好從當前選項卡中選擇「最後X次降雨」下拉菜單中的某個東西,但我遇到了問題,因爲其周圍的元素也被命名爲「span.k-widget.kdropdown.k-header」。所以這是一個挑戰。如果它是基於找到該文本的第一次出現,那麼再次,它不是最佳代碼。 –
是的,它找到了第一個。如果您需要選擇除第一個之外的其他內容,則必須更改選擇器。 – JeffC