我尝试了很多不同的格式,无法找到需要使用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控件中找到此元素而不是在浏览器中找到任何想法?
答案 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,因为它们更容易出错并且速度更慢。