2017-08-08 68 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并点击显示的那个。因为他们会根据移动或桌面分辨率

相关问题