Selenium 找不到弹出按钮

问题描述 投票:0回答:1

大家好!

我有这个网页(https://goldapple.ru/),我想在其中解析一些有关化妆品的数据。但是,当我打开网页时,出现弹出按钮,我想单击左侧的“Да,верно”。不幸的是,出现了 TimeoutException(message, screen, stacktrace) 错误,所以问题是机器看不到按钮。

网页HTML代码:


<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()

您需要了解的一些事实:


  1. 我使用 WebDriverWait 来获得一些时间让弹出按钮出现
  2. 我使用了element_to_be_clickable条件
  3. XPATH用作按钮的引用,所以地址应该没有问题
  4. 网页上没有影子根

附注一些动力

如果有人解决了这个问题,它会被认为(至少对我来说)是 Selenium 的突破

python selenium-webdriver data-science html-parsing
1个回答
0
投票

您遇到的

TimeoutException
表明WebDriver无法在超时期限内(在您的情况下为10秒)找到您的XPath指定的元素。这可能是由于多种原因造成的,例如:

  1. 不正确的 XPath: 确保您使用的 XPath 正确且唯一标识您要单击的元素。有时,如果页面结构发生变化,XPath 可能会很脆弱。
  2. 计时问题:有时,由于页面加载或 JavaScript 执行延迟,元素可能无法立即单击。您可以尝试增加超时时间或添加等待条件,等待弹出窗口完全加载后再尝试单击。 您可以采取以下几个步骤来排除故障并可能解决问题: -> 验证 XPath 确保您的 XPath 正确并指向“Да, верно”按钮。您可以使用此 Xpath“//span[contains(text(),'Да, верно')]”

-> 等待元素可见 尝试先等待元素可见,而不是 element_to_be_clickable。有时元素存在,但由于重叠或其他原因而无法立即点击。

-> 增加超时 如果由于加载延迟,元素需要更长的时间才能显示或变得可点击,请将超时时间从 10 秒增加到更高的值(例如 20 秒),然后查看是否可以解决问题。

-> 调试 如果上述方法均不起作用,请考虑添加调试语句(打印)来逐步检查发生的情况,或使用浏览器开发人员工具来检查脚本运行时的页面行为。

© www.soinside.com 2019 - 2024. All rights reserved.