无法单击某个网站上使用 Python Selenium 的按钮
Cannot click a button using Python Selenium on a certain website
我一直在尝试单击网站上的按钮来关闭弹出窗口(特别是 Google Vignette)。我会说我是初学者。
如果您想查看html,请按照以下步骤操作。
这是网站:https://www.finscreener.org/earnings/earnings-reported?o=1001&pg=1
但是您必须单击底部索引处的 “最后一个按钮”,因为 Google 小插图只会在您尝试退出当前按钮时弹出网站。
如果要检查它,请最大化 window,右键单击弹出窗口之外的某处。否则弹窗会消失,无法查看。
无论如何,当 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。
- 更改为隐式计时
- 尝试 XPath 和名称
- 底部有一张link的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 并切换到它?
你有一个 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
解决方法二:刷新页面
在你的情况下,这可能是一个更简单的解决方案,通过刷新页面它也会“关闭”弹出窗口。
driver.refresh()
我一直在尝试单击网站上的按钮来关闭弹出窗口(特别是 Google Vignette)。我会说我是初学者。 如果您想查看html,请按照以下步骤操作。
这是网站:https://www.finscreener.org/earnings/earnings-reported?o=1001&pg=1
但是您必须单击底部索引处的 “最后一个按钮”,因为 Google 小插图只会在您尝试退出当前按钮时弹出网站。
如果要检查它,请最大化 window,右键单击弹出窗口之外的某处。否则弹窗会消失,无法查看。
无论如何,当 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。
- 更改为隐式计时
- 尝试 XPath 和名称
- 底部有一张link的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 并切换到它?
你有一个 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
解决方法二:刷新页面
在你的情况下,这可能是一个更简单的解决方案,通过刷新页面它也会“关闭”弹出窗口。
driver.refresh()