无法在独立浏览器中找到元素

时间:2015-08-28 17:59:20

标签: c# visual-studio selenium-webdriver

我尝试了很多不同的格式,无法找到需要使用xpath点击的链接。请帮助我学习xpath的魔力......

IWebElement TCE = driver.FindElement(By.XPath("//div[*/text()='Recently Visited']/child::a[@title='Time Clock Entry']"));
            TCE.Click();

链接网页中的代码如下......

<div id="RecentlyVisitedWidget" class="recentlyVisitedWidget">
   <h2 id="ctl00_12_12_RecentlyVisitedLabel">Recently Visited</h2>
      <ul class="recentlyVisitedLinks">
         <li>
            <span id="ctl00_12_12_Repeater1_ctl00_link">
               <a title="Time Clock Entry" onclick="recentlyVisitedSelect('pages/VIEW/UTMEntry.aspx?USParams=PK=ESS!MenuID=2147!PageRerId=2147!ParentRerId=72','72','2147','2147', false, false, 'Time Clock Entry', true)" href="#"> Time Clock Entry</a>
            </span>
         </li>
      </ul>
</div>

我可以在表单中的webBrowser控件中使用以下代码完成此操作。

HtmlElement link = (from HtmlElement elem in webBrowser1.Document.GetElementsByTagName("a")
                                    where elem.InnerHtml == "Time Clock Entry"
                                    select elem).ElementAt(0);
                link.InvokeMember("Click");

尝试在独立浏览器(如IE或Firefox)中执行此操作时,我无法找到此链接。 我试过通过CssSelector,linkText,Partial linkText,link,XPath和Id返回一条消息告诉我找不到元素。

为什么我能够在webBrowser控件中找到此元素而不是在浏览器中找到任何想法?

2 个答案:

答案 0 :(得分:1)

你的XPath应该是这样的

//div[@id='RecentlyVisitedWidget']//a[@title='Time Clock Entry']

//div[h2[text()='Recently Visited']]//a[@title='Time Clock Entry'] 

答案 1 :(得分:0)

它必须是XPath吗?

driver.findElement(By.cssSelector("ul.recentlyVisitedLinks a[title='Time Clock Entry']")).click();

如果可能的话,我会避免使用XPath,因为它们更容易出错并且速度更慢。