2017-08-08 65 views
0

使用Selenium WebDriver嘗試測試網站https://www.healthdirect.gov.au/上的搜索功能。我每次都會收到「沒有這樣的元素/元素不可見」異常,相同的代碼適用於其他搜索,如谷歌。Selenium WebDriver(node js/C#) - 元素不可見/嘗試向搜索框發送值時沒有此類元素異常

的Javascript(節點JS)片段:

driver.get('https://www.healthdirect.gov.au/'); 

var search = driver.findElement(By.css('#header-search'));//tried with id,name,xpath elements and got same exception 

search.sendKeys('fever'); 

C#代碼段(加入等待):

string searchEngine = "https://www.healthdirect.gov.au/"; 

IWebDriver driver = new ChromeDriver(); 

driver.Navigate().GoToUrl(searchEngine); 

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(25)); 

wait.Until(ExpectedConditions.ElementExists(By.Id("header-search"))); 

driver.FindElement(By.Id("header-search")).SendKeys("fever");  

代碼從網站上找到的元素:

 <ul class="dropdown-menu hda-head_menu-row-tablet-search-list" role="listbox" position="position"> 
          </ul> 

回答

0

每當發生這種錯誤時,請確保沒有多個匹配的對象。我只是檢查螢火蟲,你可以看到有3個相同的節點和一個你感興趣的是第二個

Multiple matches

預期的解決辦法是遍歷元素

var elems = driver.FindElement(By.Css("#header-search")) 

遍歷他們並檢查IsDisplayed並點擊顯示的那個。因爲他們會根據移動或桌面分辨率

相關問題