首页 > 解决方案 > python 和 selenium 代码在一小时前工作,但现在停止工作

问题描述

尊敬的社区成员,

所以我在右下角的谷歌搜索中找到了下一个按钮,这是 HTML 代码:

<td aria-level="3" class="d6cvqb" role="heading"><a href="/search? q=site:linkedin.com/in/+AND+%22Kleiner+Perkins%22+AND+%22profile%22&amp;biw=801&amp;bih=661&amp;sxsrf=AL eKk015vcO0GNGs89AY8isGkfsRmY5fEw:1619014736075&amp;ei=UDSAYLCMBM- zsAfljLiQBQ&amp;start=30&amp;sa=N&amp;ved=2ahUKEwiw9Orxw4_wAhXPGewKHWUGDlI4FBDw0wN6BAgBEEk"
id="pnnext" style="text-align:left">
<span class="SJajHc NVbCr" style="background:url(/images/nav_logo299.webp) no-repeat;background- 
position:-96px 0;width:71px"></span><span style="display:block;margin-left:53px">Next</span></a></td>

我在 python 中使用了以下代码来定位按钮并单击它:

next_button = driver.find_element_by_xpath("//a[@id='pnnext']") 
next_button.click()

一小时前一切正常,我有点高兴,但现在找不到按钮,感谢您的时间和帮助!

编辑:我打印了google page_source,我注意到我以某种方式被检测到,有没有办法解决?

标签: pythonhtmlseleniumbuttonxpath

解决方案


可能你需要直到按钮可以点击。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, timeout=30)
wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@id='pnnext']")))
elem = driver.find_element_by_xpath("//a[@id='pnnext']")
elem.click()

选项 2

尝试使用此定位器等待:

//a[@id='pnnext' and contains(@href, '/search')]

或者,

//a[@id='pnnext' and contains(@href, '/search')]/span[1]

推荐阅读