是否可以使用 Selenium 动态创建链接并单击它?

Posted

技术标签:

【中文标题】是否可以使用 Selenium 动态创建链接并单击它?【英文标题】:Is it possible to dynamically create a link and click on it using Selenium? 【发布时间】:2021-08-21 10:56:18 【问题描述】:

假设有一个网站使用 Ajax 调用动态加载数据。数据运行到 200 页,每页大约 50 行。分页是在底部生成的,就像

<div class="pagination">
    <a class="paginate" id="previous">Previous</a>
    <span>
        <a class="paginate" id="p1">1</a>
        <a class="paginate" id="p2">2</a>
        <a class="paginate" id="p3">3</a>
        <span class="ellipsis">…</span>
        <a class="paginate" id="p200">200</a>
    </span>
    <a class="paginate" id="next">Next</a>
</div>

在Java中使用Selenium,是否可以动态生成链接如

<a class="paginate" id="p100">100</a>

点击它,直接跳转到第100页?

【问题讨论】:

【参考方案1】:

看看这是否有效:-

        Random rand = new Random();
        int lowerBound = 1;
        int upperBound = 11;
        
        int pageNum = rand.nextInt((upperBound - lowerBound)+1)+lowerBound;
        System.out.println("Page num generated "+pageNum);
        
        String xpathStr = ".//a[@id='p"+pageNum+"']";
        System.out.println(xpathStr);
        driver.findElement(By.xpath(xpathStr)).click();

输出:

Page num generated 8
.//a[@id='p8']

【讨论】:

以上是关于是否可以使用 Selenium 动态创建链接并单击它?的主要内容,如果未能解决你的问题,请参考以下文章

使用 selenium 查找输入和按钮元素

使用 selenium 根据输入单击链接 [python]

如何使用 Selenium 和 Java 单击具有 SVG 子项的链接?

我需要创建一个监视selenium执行的进程,如果在执行期间到达,将单击弹出窗口

动态 JS 频道菜单链接问题

Robot Framework Selenium For 循环单击导航链接失败并出现 StaleElementReferenceException