我在这个网站上使用了selenium,但我不能使用它的任何元素。因为它们来自'frame'而且来自'frameset',这里是html部分;
<frameset rows="0%, 95%" frameborder="0" frameSpacing="0" marginHeight="0" marginWidth="0">
<frame id='unloadFrame' src="/somesrc" noresize>
<frame src="/somesrc" noresize>
</frameset>
<noframes>
Your browser doesn't support frames, This web site requires a frames capable browser.
</noframes>
我需要访问以src开头的第二帧,我使用了这个方法,但仍然无法使用任何元素;
driver.SwitchTo().Frame(1);
Boolean sa = driver.FindElements(By.Id("ctl00_MainContent_txtCustomerId")).Count > 0;
if (sa == true)
{
driver.FindElement(By.Id("ctl00_MainContent_txtCustomerId")).SendKeys("HelloWorld");
}
是因为Frame(1)不是我想要的帧吗?或者我应该使用不同的方式进入它?
谢谢
答案 0 :(得分:6)
此代码也会切换到'src'属性为'/ somesrc'且'id'属性不是'unloadFrame'
的框架driver.SwitchTo().Frame(driver.FindElement(By.Xpath("//frame[@src='/somesrc' and not(@id='unloadFrame')]")));
答案 1 :(得分:2)
我正在编写这种简单的方法在iframe中输入文字。
public void SwitchToIframeandEnterText(IWebElement frame,
IWebElement field, string txt)
{
Driver.SwitchTo().Frame(frame);
field.SendKeys(txt);
Driver.SwitchTo().DefaultContent();
}
其中,
- IWebElement frame = Iframe的定位器
- IWebElement field =您要输入文字的字段定位器
- string txt =您要输入的文字
答案 2 :(得分:1)
在C#中切换IFrame-
例如-
driver.SwitchTo()。Frame(0);
driver.SwitchTo()。DefaultContent();
IWebElement element = driver.FindElement(By.Id(“ ElementID”));
driver.SwitchTo()。ParentFrame();