简体   繁体   English

如何在C#中单击Selenium的JS链接

[英]How to click a JS link with Selenium in C#

I am new to Selenium and trying to build a project with it. 我是Selenium的新手,并试图用它来建立一个项目。 I need to learn how to click a JS link. 我需要学习如何单击JS链接。 There are many items listed by pages. 页面列出了许多项目。 Pagination is done by JS, unfortunately. 不幸的是,分页由JS完成。 here is an example... 这是一个例子......

<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>

I would like to click pages 1., 2., 3. ,4. 我想点击页面1.,2.,3.,4。 and 5. pages above. 和5.上面的页面。 Please give me a clue 请给我一个线索

code not tested but I feel like they should work 代码没有经过测试,但我觉得他们应该工作

.page > a:contains("1")
.page > a:contains("2")
.page > a:contains("3")
.page > a:contains("4")
.page > a:contains("5")

or 要么

//li[contains(@class, 'page')]/a[text()='1']

You could first locate the pager with a CSS selector and then each link by link text: 您可以先使用CSS选择器找到寻呼机,然后按链接文本找到每个链接:

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

You could also use an XPath: 您还可以使用XPath:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM