Ниже кода щелкает поле, заполняет его Hyundai и нажимает клавишу ввода, что должно закрыть раскрывающееся меню. Но это никогда не происходит, поэтому оно не продолжает заполнять следующее поле.
До сих пор я пытался заставить его щелкнуть в любом месте, чтобы закрыть раскрывающийся список - не сработало. Попытка добавления .submit () и .click () после send_keys () - не работает.
Желаемый результат: Позвольте мне заполнить следующее поле.
Редактировать: Я заметил идентификатор поля, которое я хочу выбирать, каждый раз, когда я перезагружаюсь. Есть ли способ обойти это?
Вот где он застрял:
Второй комментарий: я набрал несколько Keys.TAB, но это не отвечает на это. Я не уверен, как решить эту загадку ..
.send_keys("Hyundai", Keys.ENTER, Keys.TAB, Keys.ENTER, Keys.TAB, Keys.TAB, Keys.TAB)
#imports
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
#options
chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-gpu")
#chrome_options.add_argument("--headless")
# enable browser logging
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
driver = webdriver.Chrome(desired_capabilities = d, options=chrome_options)
driver.fullscreen_window()
driver.get("https://forsikringsguiden.dk/#!/bilforsikring/manuel") #URL
#Fills out field called "Mærke" with Hyundai
marke = driver.find_element_by_xpath('//*[@id="s2id_carSelectedMake"]/a').click()
driver.find_element_by_xpath('//*[@id="s2id_autogen1_search"]').send_keys("Hyundai", Keys.ENTER)
#next field to fill out
model = driver.find_element_by_xpath('//*[@id="s2id_autogen2"]').click()
driver.find_element_by_xpath('//*[@id="s2id_autogen3_search"]').send_keys("i30", Keys.ENTER)
Обновление: я полагаю, причина, по которой он застревает в первом поле, заключается в "наложении" - id = select2-drop-В маску я добавил следующие строки javescript:
js = "var aa=document.getElementsByClassName('select2-drop-mask')[0];aa.parentNode.removeChild(aa)"
driver.execute_script(js)
Это похоже на работу, но теперь оно продолжает прыгать между полями 1 и 2.