2016-05-15 98 views
1

我找的元素ID为 “lastdays_day” 为:硒WebDriver.FindElements(By.CssSelector( “*”))找不到元素,C#

var elements = WebDriver.FindElements(By.Id("lastdays_day")); 

但elements.Count为0

即使是:

WebDriver.FindElements(By.CssSelector("*")) 

不能列出这个元素

我已经页面加载后卜尝试了Thread.Sleep(5000) t不起作用。 我试图

Driver.SwitchTo().DefaultContent 

Driver.SwitchTo().Frame(0) 

,但不起作用。

任何想法?

structure of the page

+1

您必须先找到iFrame。看看http://stackoverflow.com/questions/24247490/find-elements-inside-forms-and-iframe-using-java-and-selenium-webdriver –

+0

我正在尝试,但我有困难找到正确的框架。看来Selenium甚至没有看到帧。 –

回答

1

Driver.SwitchTo().DefaultContent;是切换从框架

Driver.SwitchTo().Frame(0);不会工作,要么因为在html索引从1

Driver.SwitchTo()罐开始接收ID /名称作为参数,所以切换命令应该像

Driver.SwitchTo().Frame("ombframe"); // switch to first frame 
Driver.SwitchTo().Frame("MainFrame"); // switch to second frame 

作为边注,该元素的ID是lastdays_days's',而不是lastdays_day。它也将只返回一个元素,因为ID是唯一的,因此您可以使用WebDriver.FindElement

IWebElement element = WebDriver.FindElement(By.Id("lastdays_days")); 
+0

当我使用 Driver.SwitchTo()。Frame(“MainFrame”); 我最终得到:'OpenQA.Selenium.NoSuchFrameException'类型的例外 附加信息:找不到具有名称或ID的帧元素MainFrame –

+1

@ mojmir.novak尝试切换到父帧第一个Driver.SwitchTo( ).Frame(“ombframe”);',然后到该元素的框架。 – Guy

+0

终于,它的工作原理:-) 请问,有什么办法如何确定在页面中的帧列表/或在父框架中的孩子? –