Не удается загрузить «Показать больше» на веб-странице, используя селен в Python? - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь загрузить «Show More», используя селен в python.Тем не менее, код работает и работает нормально, но я получаю «Message» и «complete» (это я понимаю) в консоли Python.Кроме того, веб-страница, которую я пытаюсь открыть, открывается, но, как только я пытаюсь прокрутить вниз, на ней появляется окно «Это окно Safari удаленно управляется автоматическим тестом».Несмотря на то, что я нажимаю «продолжить сеанс» и снова пытаюсь прокрутить страницу вниз, она снова показывает то же самое окно.

Я работаю на MacBook Air и использую Safari в качестве браузера.

from selenium import webdriver

import time

browser = webdriver.Safari(executable_path = '/usr/bin/safaridriver')

browser.get('https://www.nytimes.com/search?endDate=20190331&query=cybersecurity&sort=newest&startDate=20180401')

Show_more_xpath = '//*[@id="site-content"]/div/div[2]/div[3]/div/button'

while True:
    try:
        show_more = browser.find_elements_by_xpath('//button[@type="button"], and contains(.,"Show More")')
        time.sleep(2)
        show_more.click()
        time.sleep(5)
    except Exception as e:
        print(e)
        break
print("Complete")
time.sleep(10)

browser.quit()

Я хочу загрузить «Показать больше» автоматически, чтобы получить все записи.Конечная цель - очистить страницу с помощью Beautifulsoup.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Для нажатия на кнопку Show More выполните следующие действия.

Сначала нажмите кнопку I Accept, а затем используйте WebdriverWait и element_to_be_clickable, чтобы дождаться нажатия на элемент, а затем используйте класс действия, чтобы нажать на конкретную кнопку. Попробуйте код ниже, надеюсь, это сработает для вас.

browser.get('https://www.nytimes.com/search?endDate=20190331&query=cybersecurity&sort=newest&startDate=20180401')

browser.find_element_by_xpath("//button[contains(.,'I Accept')]").click()

while True:
    try:
        show_more = WebDriverWait(browser, 5).until(expected_conditions.element_to_be_clickable((By.XPATH, '//button[@type="button"][contains(.,"Show More")]')))
        ActionChains(browser).move_to_element(show_more).click().perform()
    except Exception as e:
        print(e)
        break

print("Complete")
time.sleep(10)

browser.quit()

Для выполнения кода выше необходимо выполнить следующие операции импорта.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.action_chains import ActionChains
0 голосов
/ 20 мая 2019

driver.find_element_by_xpath ("(.//* [normalize-space (text ()) и normalize-space (.) = 'Есть отзывы о поиске? Сообщите нам, что вы думаете.']) [1] / follow:: кнопка [1] "). нажмите ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...