我正在使用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中吗?
即使我检查它们是否存在,它也会变回负面。有什么帮助吗?
答案 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();