[英]How to handle popup window in Selenium
我试图从网站上抓取,抓取时弹出一个弹出窗口,我无法关闭它。
我试图隔离 X 按钮,但它显示出来,元素不可点击。
有没有什么动态的方法可以检查弹出窗口并在它出现时立即关闭它?
这是弹出窗口的出现方式:
这是我的代码:
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
from datetime import datetime
import time
import re
import logging
import traceback
from datetime import datetime, timedelta
import argparse
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy import exc
import mysql.connector as mysql
import io
import re
options = Options()
#options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--window-size=1366,768")
options.add_argument("--disable-notifications")
options.add_experimental_option('prefs', {'intl.accept_languages': 'en_GB'})
#options.headless = True
url='https://www.sleepx.com/ortho-memory-foam-mattress'
driver = webdriver.Chrome(options=options)
driver.get(url)
driver.find_element_by_xpath('/html/body/div[1]/div/div/div').click() # popup close button by XPath
您应该使用 Selenium WebDriverWait 提供的显式等待来等待元素可见性或可点击性,然后单击它。
像这样:
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
from datetime import datetime
import time
import re
import logging
import traceback
from datetime import datetime, timedelta
import argparse
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy import exc
import mysql.connector as mysql
import io
import re
options = Options()
#options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--window-size=1366,768")
options.add_argument("--disable-notifications")
options.add_experimental_option('prefs', {'intl.accept_languages': 'en_GB'})
#options.headless = True
url='https://www.sleepx.com/ortho-memory-foam-mattress'
driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 20)
driver.get(url)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.WigzoCloseButton"))).click()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.