自从我尝试实施SSSO以来,我和WatiN合作了大约两天,我遇到了一个问题(以前从未使用过网站自动化)。
using(var ie = new IE("http://www.example.org")){
Console.WriteLine(ie.Uri.ToString()) // Correct URL example.org
ie.GoTo("http://www.example2.org"))
Console.WriteLine(ie.Uri.ToString()) // Still example.org
}
有人可以向我解释一下吗?我在example.org上处理一个Windows-Dialog,然后我点击了一个href,它引导我到example2.org我应该填写一些文本字段,但是没有找到文本字段,我得到了一个例外。
var ie = new IE("http://www.example.org");
Console.WriteLine(ie.Uri.ToString()); // example.org
ie.Close();
ie = new IE("http://www.example2.org");
Console.WriteLine(ie.Uri.ToString()); // example2.org
第二个当然是有效的,但为什么第一个解决方案无法正常工作呢?基本上,即使旧网站不再打开,旧网站也会被引用。
答案 0 :(得分:0)
我使用Watir并且我真的不知道C#但是因为没有其他人回答过......
在第一个示例中,您将'ie'变量定义为IE("http://www.example.org")
然后在第3行,您只是引用原始的'ie'变量。
因此'ie'变量仍然具有您在第1行中给出的值。
在第二个示例中,您将'ie'定义为等于第一个url。 然后在第3行,您将'ie'的值更改为第二个URL。
控制台没有打印出您的浏览器当前所在的URL,它只是打印出'ie'的值,因为您在代码中设置了它,因为您将uri作为值的一部分包含在内即”
如果您要在'var'中设置'url',您可能需要将其命名为更符合其值的内容,如下所示:
var ie_example = new IE("http://www.example.org");
Console.WriteLine(ie_example.LocationURL.ToString()); // example.org
ie_example.Close();
var ie_example2 = new IE("http://www.example2.org");
Console.WriteLine(ie_example2.LocationURL.ToString()); // example2.org