无法在页面上找到元素

时间:2018-02-15 07:04:04

标签: c# selenium

我有一个我无法在页面上找到的元素。 实际上,我无法在此页面上找到任何元素。 我已成功移至IFrame,但无法找到任何元素。 Frmae的ID是:kendoIFrame,其中一个我找不到的元素是:



<div class="k-widget k-splitter" id="divAll" style="visibility: visible; opacity: 1; touch-action: none;" data-role="splitter">
&#13;
&#13;
&#13;

我试图找到如下元素:

 var wait = new WebDriverWait(_webdriver, new TimeSpan(0, 0, 30));
 var Gisbutton = wait.Until(x => x.FindElement(By.Id("btnGis")));
 Gisbutton.Click();
_webdriver.SwitchTo().Window(_webdriver.WindowHandles.ToList().Last());
 new WebDriverWait(_webdriver, TimeSpan.FromMilliseconds(2000)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt("kendoIFrame"));
var element = _webdriver.FindElement(By.Id("divAll"));

看起来我可以切换到相框,因为我没有收到错误,但在尝试查找元素时,我收到以下错误: OpenQA.Selenium.NoSuchElementException : Unable to find element with id == divAll

仅供参考,此特定html页面中只有一个IFrame。

3 个答案:

答案 0 :(得分:0)

如果它在iframe中,则需要先切换到该iframe,然后再搜索。类似的东西:

driver.switchTo().frame(driver.findElement(By.name("iFrameTitle")));

答案 1 :(得分:0)

根据最佳做法,您应该在可用时切换到<iframe>,然后尝试通过以下任一方法找到<iframe>中的元素:

您需要使用适当的等待切换到框架,然后按如下方式找到元素:

new WebDriverWait(driver, TimeSpan.FromMilliseconds(2000)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt("kendoIFrame"));
var element = driver.FindElement(By.CssSelector("div.k-widget.k-splitter#divAll"));

答案 2 :(得分:0)

You should switch to a <iframe> first

driver.switchTo().Frame("iFrameName"); //switching the frame

Then try to find element

driver.findElement(By.xpath("ElementXPath")).click(); // To find element