Закрыть всплывающее окно браузера в Selenium Python - PullRequest
0 голосов
/ 01 октября 2018

Я очищаю страницу, используя Selenium, Python.При открытии страницы появляется одно всплывающее окно.Я хочу закрыть это всплывающее окно в любом случае.Я попробовал, как показано ниже:

url = https://shopping.rochebros.com/shop/categories/37

browser = webdriver.Chrome(executable_path=chromedriver, options=options)
browser.get(url)
browser.find_element_by_xpath("//button[@class='click' and @id='shopping-selector-parent-process-modal-close-click']").click()

Я попробовал пару подобных постов здесь, но ничего не работает со мной.ниже ошибки я получаю.

 Message: no such element: Unable to locate element: {"method":"xpath","selector":"//button[@class='click' and @id='shopping-selector-parent-process-modal-close-click']"}

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Требуемый элемент - это тег <button> в Модальном диалоге , поэтому для щелчка по нужному элементу необходимо активировать WebDriverWait , чтобы элемент был активным и вы можете использовать следующие решения:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("https://shopping.rochebros.com/shop/categories/37")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='close' and @id='shopping-selector-parent-process-modal-close-click']"))).click()
0 голосов
/ 02 октября 2018

Вам следует подождать, пока всплывающее окно закроет его:

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

url = "https://shopping.rochebros.com/shop/categories/37"

browser = webdriver.Chrome(executable_path=chromedriver, options=options)
browser.get(url)
wait(browser, 10).until(EC.element_to_be_clickable((By.ID, "shopping-selector-parent-process-modal-close-click"))).click()

Если всплывающее окно может не появиться, вы можете использовать try / except, чтобы просто перейти, если всплывающее окно не появилось в течение 10 секунд:

from selenium.common.exceptions import TimeoutException 

try:
    wait(browser, 10).until(EC.element_to_be_clickable((By.ID, "shopping-selector-parent-process-modal-close-click"))).click()
except TimeoutException:
    print("No popup...")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...