我一直在嘗試單擊網站上的按鈕以關閉彈出視窗(特別是 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。
- 更改為隱式計時
- 嘗試 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 并切換到它?
uj5u.com熱心網友回復:
你有一個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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/405016.html
標籤:
