此頁面上有一個模態視窗:https : //shop.wegmans.com。它不會每次都彈出,但它足夠頻繁,我可以重現這個問題。
在頁面上,我正在運行以下代碼:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
option = webdriver.ChromeOptions()
option.add_argument('--disable-blink-features=AutomationControlled')
option.add_argument("start-maximized")
option.add_experimental_option(
"excludeSwitches", ["enable-automation"])
prefs = {"credentials_enable_service": False,
"profile.password_manager_enabled": False,
"useAutomationExtension": False}
option.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(options=option)
wait = WebDriverWait(driver, 20)
driver.maximize_window()
# Logging in
# ....
# ....
wait.until(EC.title_contains('Home'))
try:
driver.find_element_by_class_name("modal")
print("Modal Found")
except NoSuchElementException:
print("Modal not found")
每次頁面使用模式加載時,div 都在那里,每次控制臺列印Modal not found.
該網站正在使用 Angular 和 React。不知道是不是DOM生成方式的原因。
如何讓 Selenium 看到模態以便我可以關閉它?
uj5u.com熱心網友回復:
由于頁面https://shop.wegmans.com上的模態視窗不會每次都彈出,您可以click()將模態上的包圍在try-except{}具有特定超時的塊中,如下所示:
from selenium.common.exceptions import TimeoutException
try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "modal"))).click()
print("Modal found and clicked")
except TimeoutException:
print("Modal wasn't found")
uj5u.com熱心網友回復:
我試過了5-6 times,但實際上無法重現它。我相信你需要induce WebDriverWait。
try:
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "modal")))
print("Modal Found")
except:
print("Modal not found")
模態視窗的 HTML 會更有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355807.html
上一篇:分頁xpath無效
下一篇:Selenium找不到任何元素
