C# Web自动化中的Watin问题

C# Web自动化中的Watin问题,c#,automation,watin,C#,Automation,Watin,我正在使用watin登录AOL Lifestream,获取关于我当前Lifestream的所有评论 我正在使用Watin和IE登录。问题是,即使表单元素在登录页面上,它似乎也找不到它们 以下是查找和填写表单元素的代码: // Sign in IE ie = new IE("http://lifestream.aol.com/"); ie.WaitForComplete(); // Log the user in or out if

我正在使用watin登录AOL Lifestream,获取关于我当前Lifestream的所有评论

我正在使用Watin和IE登录。问题是,即使表单元素在登录页面上,它似乎也找不到它们

以下是查找和填写表单元素的代码:

// Sign in
        IE ie = new IE("http://lifestream.aol.com/");
        ie.WaitForComplete();

        // Log the user in or out
        if (ie.Element(Find.ById("account_dd")).Exists)
        {
            ie.GoTo("http://lifestream.aol.com/logout");
        }
        else
        {
            ie.Link(Find.ById("signInLink")).Click();
            ie.TextField(Find.ById("lgnId1")).Value = txtUsername.Text;
            ie.TextField(Find.ById("pwdId1")).Value = txtPassword.Text;
            ie.Button(Find.ById("submitID")).Click();
        }
表单元素在那里,因为我可以用Firebug查看它们。它们似乎是用Javascript生成的,但它们应该仍然在DOM中,对吗


即使我检查它们是否存在,结果也是否定的。有任何帮助吗?

登录控件位于id=loginframe的iframe元素中。在else分支中更改代码,如下所示:

var frame = ie.Frame("loginframe");

frame.TextField(Find.ById("lgnId1")).Value = txtUsername.Text;
frame.TextField(Find.ById("pwdId1")).Value = txtPassword.Text;
frame.Button(Find.ById("submitID")).Click();