Выпадающий список и Selenium с Python - PullRequest
0 голосов
/ 11 июня 2018

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

-Вставьте поверхность вашего дома (это не должно говорить мне, потому что это форма, которая исчезает, когда я нажимаю "Я знаю, что я потребляю") * [НАСТОЯЩИЙ]

-Вы должны указать свой город (хотя я и набираю полное имя, я не знаю, как можно щелкнуть по элементу раскрывающегося списка из селена) [решено]

Это код:

from bs4 import BeautifulSoup as soup
from openpyxl import load_workbook
from openpyxl.styles import PatternFill, Font
from selenium import webdriver
from selenium.webdriver.common.by import By
import datetime
import os

#saving url
browser = webdriver.Chrome(executable_path=r"C:\Program Files(x86)\Google\Chrome\Application\chromedriver.exe")
my_url = 'https://comparateur.selectra.info'
#opening my connection and downloading the page
browser.get(my_url)
button = browser.find_elements_by_class_name('custom-control-indicator')[-1]
browser.execute_script("arguments[0].click();", button)
start = browser.find_element(By.XPATH, '//*[@id=\"no-cookie\"]/form/button')
start.click()
comp = browser.find_element(By.XPATH, '//*[@id=\"form-comparaison\"]/fieldset[1]/div[1]/div/label[1]')
comp.click()
cons = browser.find_element_by_class_name('know_consumption_yes')
browser.execute_script("arguments[0].click();", cons)
browser.execute_script("arguments[0].click();", cons)
kw = browser.find_element_by_id('annual-elec')
kw.send_keys("3200")
ville = browser.find_element_by_id('city')
ville.send_keys("Paris (75001)")
submit = browser.find_element_by_id('compare-offer')
submit.click()

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Список здесь:

here

Просто посмотрите, что вам нужно.

Сначала вы должны ввести имя (лучше полноеимя) в поле ввода, затем немного подождите (2-3 секунды), прежде чем появится список, затем вы можете найти свой элемент из выпадающего списка и щелкнуть по нему.

Например:

ville = browser.find_element_by_id('city')
ville.send_keys("Paris (75001)")
driver.implicitly_wait(2) # waits 2 sec
element = driver.find_element_by_xpath("//*[contains(text(), 'Paris (75001)')]") # locate the dropdown elem
element.click() # click on it
0 голосов
/ 11 июня 2018

Я не уверен, что ваши селекторы верны, так как нет HTML,

Попробуйте эти методы, они в основном должны решить проблему,

driver.get('url')

select = Select(driver.find_element_by_id('your_select_element_id here'))

# select by visible text
select.select_by_visible_text('Your option text here')

# select by value 
select.select_by_value('option_value here')

Также см. Ответна этот вопрос

Как правильно выбрать использование Selenium Python WebDriver

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