Web Automation Watin问题

时间:2011-02-28 12:19:06

标签: c# automation watin

我正在使用watin登录AOL 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中吗?

即使我检查它们是否存在,它也会变回负面。有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

登录控件位于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();