在上篇學習Selenium在.net上的使用後,隻是簡單了解了這些技術,做了個小demo,并不夠過瘾,今天我們使用這項web自動化技術來模拟下百度登入。
關于引用這些sdk等我就不再寫出來了,如果遇到不懂的就請浏覽我上篇文章.net下使用Selenium、PhantomJS。下面我們來濾下模拟登入的思路。
第一步:
我們打開百度網址,檢視登入按鈕的dom元素,如下圖;
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZmNGZ4QDOwU2MhBjZiZTOlJTM0ADN5MWM1IjYzMWZy8CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
第二步:
選擇操作登入按鈕的單擊事件,這時處理一下程式休息幾秒;
第三步:
彈出登入按鈕的對話框,選擇使用者名登入,同樣也是操作其dom元素;
第四步:
選擇使用者和密碼,登入按鈕的dom元素(這裡的登入按鈕式立即登入,前面的登入是彈出登入窗體)
很簡單,大體思路就是這樣,下面我們上完整的代碼;
{
static void Main(string[] args)
{
var url = "https://www.baidu.com";
var driver1 = new PhantomJSDriver(GetPhantomJSDriverService());
driver1.Navigate().GoToUrl(url);
var login = driver1.FindElement(By.LinkText("登入"));
login.Click();
Console.WriteLine("------------------------");
Console.WriteLine(driver1.PageSource);
Console.WriteLine("------------------------");
Thread.Sleep(8000);
IWebElement e = driver1.FindElement(By.LinkText("使用者名登入"));
if (e != null)
{
e.Click();
}
driver1.FindElement(By.Id("TANGRAM__PSP_10__userName")).SendKeys("[email protected]");
driver1.FindElement(By.Id("TANGRAM__PSP_10__password")).SendKeys("123456");
driver1.FindElement(By.Id("TANGRAM__PSP_10__submit")).Click();
Console.Read();
}
private static PhantomJSDriverService GetPhantomJSDriverService()
{
PhantomJSDriverService pds = PhantomJSDriverService.CreateDefaultService();
//設定代理伺服器位址
//pds.Proxy = $"{ip}:{port}";
//設定代理伺服器認證資訊
//pds.ProxyAuthentication = GetProxyAuthorization();
return pds;
}
}
最後,關于登入後的截圖資訊我這裡就不展示了,值得注意的就是dom元素的操作,一定要選擇正确,如果你登入了百度賬号還選擇去登入這時的dom元素操作肯定會找不到。