我有这个网页(https://goldapple.ru/),我想在其中解析一些有关化妆品的数据。但是,当我打开网页时,出现弹出按钮,我想单击左侧的“Да,верно”。不幸的是,出现了 TimeoutException(message, screen, stacktrace) 错误,所以问题是机器看不到按钮。
<button type="button" class="MMwlC KQN8E yVRvi I1E8J PrKjg Rt0VH"><span class="_1MvHE"><span class="nOERC">
Да, верно
</span> <span class="SdR9G" style="display: none;"><div class="o8w4X"><div class="-tctp"></div> <div class="-tctp"></div> <div class="-tctp"></div> <!----></div></span></span></button>
#import some dependencies
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
#actual code
browser = Chrome()
url = "https://goldapple.ru/"
browser.get(url)
wait = WebDriverWait(browser, 10)
wait.until(
EC.element_to_be_clickable((By.XPATH, "//*[@id='__layout']/div/div[5]/div[2]/div[1]/div/div[2]/button[1]"))
).click()
如果有人解决了这个问题,它会被认为(至少对我来说)是 Selenium 的突破
您遇到的
TimeoutException
表明WebDriver无法在超时期限内(在您的情况下为10秒)找到您的XPath指定的元素。这可能是由于多种原因造成的,例如:
-> 等待元素可见 尝试先等待元素可见,而不是 element_to_be_clickable。有时元素存在,但由于重叠或其他原因而无法立即点击。
-> 增加超时 如果由于加载延迟,元素需要更长的时间才能显示或变得可点击,请将超时时间从 10 秒增加到更高的值(例如 20 秒),然后查看是否可以解决问题。
-> 调试 如果上述方法均不起作用,请考虑添加调试语句(打印)来逐步检查发生的情况,或使用浏览器开发人员工具来检查脚本运行时的页面行为。