Добавить текст / дату / время в веб-форму с Python - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь заполнить веб-форму с python (см. Прикрепленный код). Есть четыре поля ... два текстовых поля, которые мне удалось заполнить "Start-Station" и "End-Station", поле для даты и одно для времени. К сожалению, поля 3 и 4 не заполняются моими входными данными. Я думаю, они не распознаются правильно .... Кто-нибудь знает, что я должен изменить, чтобы я мог добавить данные там?

Спасибо за вашу помощь.

from selenium import webdriver

driver = webdriver.Chrome('...path-to...\chromedriver.exe')  
driver.get('https://www.bahn.de/p/view/index.shtml')  
Checkdata = ['Start-Station', 'End-Station',
                'Do, 12.03.20', '05:30']  
for Check in Checkdata:  
    driver.find_element_by_id("js-auskunft-autocomplete-from").send_keys(Checkdata[0])
    driver.find_element_by_id("js-auskunft-autocomplete-to").send_keys(Checkdata[1]) 
    driver.find_element_by_id("dp1583859161773").send_keys(Checkdata[2])    
    driver.find_element_by_id("js-auskunft-timeinput").send_keys(Checkdata[3])

Ответы [ 3 ]

1 голос
/ 11 марта 2020

Использование find_element_by_name:

    driver.find_element_by_id("js-auskunft-autocomplete-from").send_keys(Checkdata[0])
    driver.find_element_by_id("js-auskunft-autocomplete-to").send_keys(Checkdata[1]) 
    driver.find_element_by_name("date").send_keys(Checkdata[2])    
    driver.find_element_by_name("time").send_keys(Checkdata[3])
0 голосов
/ 12 марта 2020

приложил мое рабочее решение, содержащее некоторые ваши предложения:

import selenium
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome('path\to\.exe')
driver.get('https://www.bahn.de/p/view/index.shtml')

checkzeiten = ['start station', 'end statino','05:30']
#                , ['2', 'München Hbf', 'Hochzoll Bahnhof, Augsburg (Bayern)',
#               'Mi, 11.03.20', '16:00']]
#for Check in CheckZeiten:
driver.find_element_by_id("js-auskunft-autocomplete-from").send_keys(checkzeiten[0])
driver.find_element_by_id("js-auskunft-autocomplete-to").send_keys(checkzeiten[1]) 

#Date field already contains todays date...that´s OK

for x in range(5):  #delete old time from field & add new one
    driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div[2]/div/div[4]/div/form/fieldset[1]/div[2]/div[2]/input').send_keys(Keys.BACKSPACE)
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div[2]/div/div[4]/div/form/fieldset[1]/div[2]/div[2]/input').send_keys(checkzeiten[2])

#click SUBMIT button
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div[2]/div/div[4]/div/form/fieldset[5]/div/input[1]').click()
0 голосов
/ 11 марта 2020

Вот рабочая версия.

По дате и времени вы должны очистить ввод. Вовремя, если вы очистите ввод, он будет автоматически завершен, так что вы будете использовать 5 раз возврат, и там вы go.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://www.bahn.de/p/view/index.shtml')
Checkdata = ['Start-Station', 'End-Station',
                'Do, 12.03.20', '05:30']

driver.find_element_by_id("js-auskunft-autocomplete-from").send_keys(Checkdata[0])
driver.find_element_by_id("js-auskunft-autocomplete-to").send_keys(Checkdata[1])
driver.find_element_by_name("date").clear()
driver.find_element_by_name("date").send_keys(Checkdata[2])
for x in range(5):
    driver.find_element_by_name("time").send_keys(Keys.BACKSPACE)
driver.find_element_by_name("time").send_keys(Checkdata[3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...