我正在尝试使用Watin登录网站,我想要保留会话,所以我不会每次都登录。
但是,每次调用LogIn时,行if (browser.ContainsText(isLoggedInClass))
都找不到我在打开的浏览器中看到的内容。
我添加了行string checkHtmltoSeeIfClassExists = browser.Body.Parent.OuterHtml;
来物理检查字符串是否包含在html中。
我有点陷入困境,因为Watin似乎没有坚持会议?有没有人有任何想法有什么不对?
我到目前为止的代码是
using WatiN.Core;
namespace ProjectXYZ
{
class Navigate
{
private IE browser;
public void LogIn()
{
const string isLoggedInClass = "gwt-Hyperlink optionLink optionLink_myAccount";
if (browser == null)
browser = new IE("https://www.somewebsite.com");
string checkHtmltoSeeIfClassExists = browser.Body.Parent.OuterHtml;
if (browser.ContainsText(isLoggedInClass))
{
string test = "class found!";
}
else
{
browser.TextField(Find.ByName("username")).Value = xx.un;
browser.TextField(Find.ByName("userpass")).Value = xx.pw;
browser.Button(Find.ByTitle("Login")).Click();
}
}
}
}
答案 0 :(得分:2)
您需要的机制是WatiN Framework中内置的AttachTo<>功能。由于WatiN仅支持single-threaded apartment state,因此您必须手动管理会话。
上面的链接有一个使用'AttachTo&lt;&gt;'的代码示例但是,为了彻底,我也在下面提供了一个。
var IE = IE.AttachTo<IE>(Find.ByUrl(someURLHere));