【问题标题】:How to access controls in an iframe using WatiN?如何使用 WatiN 访问 iframe 中的控件?
【发布时间】:2013-02-01 16:43:31
【问题描述】:

我正在尝试使用 C# 中的 WatiN 访问 iframe 中的复选框。

文档建议使用这个:

var frame = browser.Frame(frameId);

但是,我尝试过这种格式,如下所示:

var edUsrFrame = browser.Frame(Find.ByName ("ctl00_ContentPlaceHolder1_WindowManager1359542712913"));

但是,我不知道如何访问嵌套在该框架上的元素(复选框)。

iframe 使用动态名称是否存在问题?我试过直接访问复选框,但同样没有成功。

谢谢。

【问题讨论】:

  • 第一,是否在同一个域中?

标签: c# dom iframe dynamic watin


【解决方案1】:

当您想要访问框架内的项目时,您就像对待“顶级”浏览器一样对待框架。

点击复选框:

var myFrame = browser.Frame(Find.bywhatever());  //Gets the frame
myFrame.CheckBox(Find.ByName("checkboxnamehere")).Click();

或者更简单地说:

browser.Frame(Find.Bywhatever(...)).CheckBox(Find.ByWhatever(...)).Click();

如果框架使用的动态名称在每次页面加载时都会发生变化,而不是按名称查找,而是通过正则表达式、索引或通过简洁标识该框架的内容进行查找。底线:如果名称将页面加载更改为页面加载,则不能使用名称。

【讨论】:

  • 我的策略还没有成功。
  • 索引不合适,正则表达式没有像我希望的那样工作。
【解决方案2】:

browser.Frame(Find.ByName("ctl00_ContentPlaceHolder1_WindowManager1359542712913")).CheckBox(Find.ById("abc")).Click();

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
相关资源
最近更新 更多