Использование Selenium для удаления PopUp - PullRequest
0 голосов
/ 16 апреля 2020

Я использую Selenium для удаления всплывающего окна с сайта investing.com, но не могу правильно распознать всплывающее окно. Я использую код:

Мне нужно нажать кнопку "Понял" ...

from selenium import webdriver
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 TimeoutException
from time import sleep

browser = webdriver.Chrome(executable_path="C:\\…….\chromedriver.exe")
browser.get("https://uk.investing.com/indices/mining-historical-data/")

browser.switchTo().frame(browser.findElement(By.xpath("//iframe[contains(@src,'https://prefmgr-    cookie.truste-svc.net/cookie_js/cookie_iframe.html?parent=https://consent-pref.trustarc.com/??    layout=gdpr&type=investingiab2&site=investing-iab.com&action=notice&country=gb&locale=en&behavior=expressed&uid=dc7cd041-d8c4-4102-9522-1025da9b6e09&privacypolicylink=https://uk.investing.com/about-us/privacy-policy&iab=true&irm=undefined&from=https://consent.trustarc.com/')]"")));
sleep(3)
browser.findElement(By.xpath("//input[@name='Got it']")).click();

1 Ответ

0 голосов
/ 16 апреля 2020

Всплывающее окно находится внутри iframe, и идентификаторы элементов меняются, поэтому это немного сложно.

Иногда появляется второе всплывающее окно, обязательно запустите этот код перед ним.

Этот код предназначен для закрытия первого всплывающего окна.

from selenium import webdriver
from time import sleep

browser = webdriver.Chrome(executable_path="C:\\…….\chromedriver.exe")
browser.get("https://uk.investing.com/indices/mining-historical-data/")
sleep (3)

# get iframe element
title = "TrustArc Cookie Consent Manager"
frameElement = browser.find_element_by_xpath("""//*[@title="TrustArc Cookie Consent Manager"]""")

# get id iframe
id = frameElement.get_property("id")
print(id)

# switch to iframe element
browser.switch_to.frame(id)

sleep (1)

# get element to click
elemet = browser.find_element_by_xpath("""//*[@class='call']""")
print(elemet.get_attribute('innerHTML'))

# click element
elemet.click()

# switch the control back to the parent frame
browser.switch_to.default_content()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...