我正在使用Watin,我想运行一些自定义的JavaScript。我不能使用Browser.Eval,因为有时我会想要在IFrame中执行代码。我尝试使用DomContainer属性,但DomContainer返回完整的DOM而不是IFrame的DOM。 示例如下:
Element.DomContainer.Eval(jScript)
有没有办法使用Element对象?
我想避免使用两个构造函数。 (见下文):
public class TelerikWatinTextBox: ITextBox
{
public TelerikWatinTextBox(Frame frame, string clientId)
{
Frame = frame;
ClientId = clientId;
}
public TelerikWatinTextBox(Browser browser, string clientId)
{
Browser = browser;
ClientId = clientId;
}
public string ClientId { get; set; }
public Browser Browser { get; set; }
public Frame Frame { get; set; }
#region ITextBox Members
public string Value
{
get
{
string value = "";
string jScript = string.Format(@"$find(""{0}"").get_value();", ClientId);
if (Browser != null)
{
value = Browser.Eval(jScript);
}
else if (Frame != null)
{
value = Frame.Eval(jScript);
}
return value;
}
set
{
string jScript = string.Format(@"$find(""{0}"").set_value(""{1}"");", ClientId, value);
if (Browser != null)
{
Browser.Eval(jScript);
}
else if (Frame != null)
{
Frame.Eval(jScript);
}
}
}
#endregion
}
public interface ITextBox
{
string Value { get; set; }
}
N.B。 clientId是对DIV的引用。
答案 0 :(得分:0)
试试这个(未经测试):
Frame iFrame = browser.Frame(Find.ByClass("ClassName"));
iFrame.Eval("script")