如何在 C# 中单击带有 Selenium 的 JS 链接
Posted
技术标签:
【中文标题】如何在 C# 中单击带有 Selenium 的 JS 链接【英文标题】:How to click a JS link with Selenium in C# 【发布时间】:2017-02-21 19:40:03 【问题描述】:我是 Selenium 的新手,正在尝试用它构建一个项目。我需要学习如何单击 JS 链接。有许多按页面列出的项目。不幸的是,分页是由 JS 完成的。这是一个例子...
<ul class="pagination museo-700">
<li class="first hidden disabled">
<a href="#">First</a>
</li>
<li class="prev disabled">
<a class="arrow" href="#">
<img src="/areas/site/Content/images/page/pagination-prev-arrow.png">
</a>
</li>
<li class="page active">
<a href="#" class="active">1</a>
</li>
<li class="page">
<a href="#">2</a>
</li>
<li class="page">
<a href="#">3</a>
</li>
<li class="page">
<a href="#">4</a>
</li>
<li class="page">
<a href="#">5</a>
</li>
<li class="next">
<a class="arrow" href="#">
<img src="/areas/site/Content/images/page/pagination-next-arrow.png">
</a>
</li>
<li class="last hidden">
<a href="#">Last</a>
</li>
</ul>
我想点击页面 1., 2., 3. ,4.和 5. 页以上。请给我一个线索
【问题讨论】:
【参考方案1】:代码未经测试,但我觉得它们应该可以工作
.page > a:contains("1")
.page > a:contains("2")
.page > a:contains("3")
.page > a:contains("4")
.page > a:contains("5")
或
//li[contains(@class, 'page')]/a[text()='1']
【讨论】:
【参考方案2】:您可以先使用 CSS 选择器定位寻呼机,然后通过链接文本找到每个链接:
driver.FindElement(By.CssSelector("ul.pagination"))
.FindElement(By.LinkText("1")).Click();
您也可以使用 XPath:
driver.FindElement(By.XPath("//a[@href='#'][text()='1']")).Click();
【讨论】:
以上是关于如何在 C# 中单击带有 Selenium 的 JS 链接的主要内容,如果未能解决你的问题,请参考以下文章
如何错误处理 Selenium 无法单击元素,因为其他元素在 C# 中遮挡了它? [复制]
如何使用 jQuery 在 Selenium WebDriver 中单击带有 Java 的按钮
Selenium C# Webdriver如何检测元素是不是可见