我正在使用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>
有什么建议吗?我没有想法。
答案 0 :(得分:0)
我设法找到了解决方法。我没有尝试单击下一个按钮,而是单击相关的页面按钮。我定义j = 2开始,然后使用以下代码:
import socket
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.connect((hostname, port))
transport = paramiko.Transport(sock)
我仍然不明白为什么第一个解决方案不起作用,但这是点击分页的有效解决方案。