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



我尝试了许多不同的格式,无法找到我需要使用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控件中找到此元素而不是在浏览器中找到此元素的任何想法?

您的XPath应该是这样的

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

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

一定是XPath吗?

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

我会尽量避免使用xpath,因为它们更容易出错,而且速度更慢。

相关内容

最新更新