点击Python中的Selenium分页

时间:2016-10-07 14:30:58

标签: python selenium onclick click

我正在使用Python中的Selenium构建自动化框架,我试图通过单击“下一步”按钮在HubSpot.com上遍历登录页面。

根据Chrome检查器,“下一步”按钮位于以下HTML中:

<a class="next" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0">
    <span data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.1">Next</span>
    <span class="right" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.2"></span>
</a>

我使用以下Python代码单击按钮:

time.sleep(3)
wait(self.driver, """//a[@class="next" and not(@disabled)]""")
            nextButton = self.driver.find_element(By.XPATH, """//a[@class="next" and not(@disabled)]""")
            hov = ActionChains(self.driver).move_to_element(nextButton)
            hov.click().perform()

我的wait()函数定义为:

def wait(dr, x):
    element = WebDriverWait(dr, 5).until(
        EC.presence_of_element_located((By.XPATH, x))
    )
    return element

这在第一页上完全正常。但出于某种原因,当我到第二页时,它无法点击按钮。没有错误,它只是在第三页开始做它应该做的 - 但在第二页。另外,如果我在单击第二页上的Next按钮之前停止脚本,我可以看到按钮在Chromedriver中突出显示。

根据Chrome Inspector ::

,“下一步”按钮位于第2页的以下HTML中
<a class="next" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0">
    <span data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.1">Next</span>
    <span class="right" data-reactid=".0.1.0.0.2.1.0.0.1.0.$next.0.2"></span>
</a>

有什么建议吗?我没有想法。

1 个答案:

答案 0 :(得分:0)

我设法找到了解决方法。我没有尝试单击下一个按钮,而是单击相关的页面按钮。我定义j = 2开始,然后使用以下代码:

import socket

sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.connect((hostname, port))
transport = paramiko.Transport(sock)

我仍然不明白为什么第一个解决方案不起作用,但这是点击分页的有效解决方案。