Всплывающее окно не исчезает при веб-скрапинге с Selenium и Python - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь проанализировать таблицу из https://www.morningstar.de/de/screener/fund.aspx#? FiltersSelectedValue =% 7B% 22sustainabilityRating% 22:% 7B% 22id% 22:% 225% 22% 7D% 7D & page = 1 & perPage = 10 & sortField = legalName & sortOrder = как c.

Однако, открывая веб-сайт с селеном, я всегда получаю сначала всплывающее окно, для закрытия которого мне нужно выбрать тип пользователя (radiobutton), а затем нажать на кнопка "принять".

После того, как я продолжаю эти "клики" с помощью python и селена, всплывающее окно не исчезает, но я вижу, что клики были обработаны. Это не показывает никакой ошибки (все необходимые поля выбраны и скрипт python также ничего не выдает).

Вот мой код:

from selenium import webdriver
import time

browser = webdriver.Firefox()
url="https://www.morningstar.de/de/screener/fund.aspx#?filtersSelectedValue=%7B%22sustainabilityRating%22:%7B%22id%22:%225%22%7D%7D&page=1&perPage=10&sortField=legalName&sortOrder=asc"
browser.get(url)
time.sleep(10)

try:
    radio_button = browser.find_elements_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div/div[3]/div[1]/div[1]/fieldset/div[2]/label/span/span[1]')[0]
    radio_button.click()
    time.sleep(3)

    accept_button=browser.find_element_by_id('_evidon-accept-button')
    accept_button.click()
    print("accepted")
except:
    print(" something went wrong")

Мне нужно закрыть это всплывающее окно, чтобы получить доступ к таблице, что я делаю не так?

1 Ответ

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

Пример для радиокнопки #finaprofessional > span:nth-child(1) или #finaprofessional > span:nth-child(2)

import time
from selenium import webdriver


def example():
    firefox_browser = webdriver.Firefox()
    firefox_browser.get("https://www.morningstar.de/de/screener/fund.aspx#?filtersSelectedValue=%7B%22sustainabilityRating%22:%7B%22id%22:%225%22%7D%7D&page=1&perPage=10&sortField=legalName&sortOrder=asc")

    time.sleep(10)  # wait for page to load
    radio_button = firefox_browser.find_element_by_css_selector("#finaprofessional > span:nth-child(1)")
    radio_button.click()
    time.sleep(10)
    accept_button = firefox_browser.find_element_by_id("_evidon-accept-button")
    accept_button.click()


if __name__ == "__main__":
    example()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...