【问题标题】:Cannot click a button using Python Selenium on a certain website无法在某个网站上使用 Python Selenium 单击按钮
【发布时间】:2022-01-06 22:11:57
【问题描述】:

我一直在尝试单击网站上的按钮来关闭弹出窗口(特别是 Google Vignette)。我会说我是初学者。 如果您想查看 html,请按照以下步骤操作。

这是网站:https://www.finscreener.org/earnings/earnings-reported?o=1001&pg=1

但您必须点击底部索引中的“最后一个按钮”,因为只有在您尝试退出当前网站时才会弹出 Google Vignette。

如果要检查它,然后最大化窗口,右键单击弹出窗口之外的某个位置。否则,弹出窗口将消失,您无法检查。

无论如何,当 Google 广告出现时,我想将其关闭。 我尝试了下面的代码将 iframe 更改为广告,

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'ad_iframe')))
iframe = driver.find_element(By.XPATH,"//iframe[@name='ad_iframe']")
driver.switch_to.frame(iframe)

但是代码找不到 iframe 并给我一个 WebDriverWait 行的 TimeoutException。

我尝试了以下,但代码绝对拒绝定位广告 iframe。

  1. 更改为隐式计时
  2. 尝试 XPath 和名称
  • 底部有一个iframe html的图片链接 找到 iframe 后,我有以下点击命令 - 我现在无法执行。
close_button = driver.find_element(By.XPATH, "/html/body/div[2]/div[2]/div[2]/div/div/div[2]/div/div/div[3]").click()

如何找到 iframe 并切换到它?

【问题讨论】:

  • 您能否详细说明哪个按钮会触发广告?
  • 在表格底部,您看到页码了吗? 1/2/3/4 下一个> LAST 。点击LAST就会触发。
  • 我试过了。什么都没有。

标签: python html selenium iframe


【解决方案1】:

你在另一个里面有一个iframe。您必须切换两个框架才能到达关闭按钮。

解决方案 1:关闭广告

with webdriver.Chrome() as driver:
    driver.get(url)
    wait = WebDriverWait(driver, 10)
    # Wait until the frame appears and switch to it
    wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'aswift_5')))
    driver.switch_to.frame('ad_iframe')
    driver.find_element(By.ID, 'dismiss-button').click()

您还必须包含以下导入:

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

解决方案 2:刷新页面

在您的情况下,这可能是一个更简单的解决方案,通过刷新页面它也会“关闭”弹出窗口。

driver.refresh()

【讨论】:

  • @InkyuKim 很高兴听到并欢迎来到 SO。如果这解决了您的问题,请不要忘记将答案标记为已接受。 (复选标记)
猜你喜欢
  • 2015-09-01
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 2020-07-30
  • 1970-01-01
相关资源
最近更新 更多