C#中經過Selenium定位標籤的問題

剛纔在QQ羣裏看到有人提問,如何實現退出百度登陸問題。那麼之因此會有這個問題,主要是由於這個元素,以下圖所示,是沒法直接定位到的:ui

通過研究發現,要想定位到這種元素,攏共分兩步:spa

第一步,把鼠標移到能使目標元素顯示在頁面上的前置元素上;code

第二步,經過xpath對目標標籤元素進行定位。orm

代碼以下:blog

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Interactions;
using System.Threading;

namespace BaiduAutoLoginOut
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver iw = new InternetExplorerDriver();
            iw.Navigate().GoToUrl("http://www.baidu.com");
            IWebElement login = iw.FindElement(By.Id("s_username_top"));
            Actions action = new Actions(iw);
            action.MoveToElement(login).Build().Perform();
            WaitUntilPageLoaded(iw, "//a[text()=' 退出 ']");
            iw.FindElement(By.XPath("//a[text()=' 退出 ']")).Click();
        }
        private static void WaitUntilPageLoaded(IWebDriver iw, string v)
        {
            try
            {
                iw.FindElement(By.XPath(v));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Thread.Sleep(1000);
                WaitUntilPageLoaded(iw, v);
            }
        }
    }
}
相關文章
相關標籤/搜索