如何在c#中使用Selenium点击JS链接

How to click a JS link with Selenium in C#

本文关键字:Selenium 点击 JS 链接      更新时间:2023-09-26

我是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。页上面。请给我一个提示

您可以首先使用CSS选择器定位分页,然后每个链接逐个链接文本:

driver.FindElement(By.CssSelector("ul.pagination"))
      .FindElement(By.LinkText("1")).Click();

也可以使用XPath:

driver.FindElement(By.XPath("//a[@href='#'][text()='1']")).Click();

代码没有测试,但我觉得他们应该工作

.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']