Невозможно нажимать кнопки с помощью Selenium с Python (JavaScript тоже не работал) - PullRequest
0 голосов
/ 11 июля 2020

https://www.fire.ca.gov/incidents/2018/ [введите здесь описание изображения] [1]

[1]: https://i.stack.imgur.com/c6Z5K.png** strong text **

Идея заключалась в том, чтобы вытащить все сожженные акры на 31 странице. Пытался сделать обычный щелчок и JS щелчок, но оба не дали результата. Об ошибках не сообщалось, это были просто кнопки, которые не работали --- Они никогда не покидали страницу 1, поэтому в основном я получал те же числа 31 раз.

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

for i in range(31):
    records = driver.find_elements_by_class_name('responsive-table-row')
    for n in range(1,11):
        record_single = records[n].find_elements_by_class_name('responsive-table-cell')
        try:
            acres = record_single[3].find_element_by_tag_name('span').text  
        except:
            acres = 'N/A'
    
        ws.append([acres])

    buttons = driver.find_element_by_class_name('pagination-navigation')
    button_parent = buttons.find_element_by_tag_name('ul')
    button_list = button_parent.find_elements_by_tag_name('li') 
    if i <30:
        #button_list[i+1].click
        driver.execute_script('arguments[0].click()',button_list[i+1])
        time.sleep(3)

1 Ответ

0 голосов
/ 11 июля 2020

Button_list содержит li.

Ваш скрипт пытается щелкнуть структуру элементов списка (li), а не привязку в ней (a). Если вы посмотрите на источник, li ничего не содержит. Якорь содержит javascript href и должен запускать событие для навигации по странице.

В вашем решении в вашем l oop в конце вы захотите сделать что-то вроде:

Button_list[i+1].find_element_by_tag_name('a').click

Кроме того, вы можете объединить все эти находки в 1 xpath. Откройте chromedevtools, нажмите control + f и введите следующее: [редактировать] обновленный xpath

//*[@class='pagination-navigation']/ul/li

Это создаст список всех li.

[edit] Добавлен этот бит

Кроме того, вы можете добавить /a в конец и напрямую создать список кнопок (все еще используя элемент поиска s ):

//*[@class='pagination-navigation']/ul/li/a

В моих инструментах разработчика это соответствует 31 элементу.

Это возвращает несколько совпадений, и вы можете использовать это для заполнения вашего button_list. Существует множество ресурсов, которые помогут вам научиться использовать xpath - просто дайте ему Google: -)

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