2017-09-22 38 views
-1

我試圖在https://www.wg-gesucht.de/en/和後續使用硒的鏈接中輸入表單。下面是我的代碼在表單域中輸入日期

from selenium import webdriver 

URL = "https://www.wg-gesucht.de/en/" 

driver = webdriver.Chrome(executable_path='chromedriver.exe') 

driver.get(URL) 

#driver.find_element_by_xpath("//input[@id='date_from_input']").send_keys('31/08/2017') 
#driver.find_element_by_xpath("//input[@id='date_to_input']").send_keys('01/09/2017') 

driver.find_element_by_xpath("//input[@id='autocompinp']").send_keys('Berlin') 

driver.find_element_by_xpath("//button[@id='rubrik-dropdown-menu']").click() 
l1 = driver.find_element_by_xpath("//li[@data-text='Flatshares']") 
driver.execute_script("arguments[0].click();", l1) 

driver.find_element_by_xpath("//button[@id='ang-ges-dropdown-menu']").click() 
l2 = driver.find_element_by_xpath("//li[@data-text='Offers']") 
driver.execute_script("arguments[0].click();", l2) 

driver.find_element_by_xpath("//input[@id='search_button']").click() 

driver.find_element_by_xpath("//input[@id='rMax']").send_keys('400') 
cmd_d1 = driver.find_element_by_xpath("//input[@id='date_from_input']").value= '31/08/2017' 
driver.execute_script(cmd_d1) 
cmd_d2 = driver.find_element_by_xpath("//input[@id='date_to_input']").value = '01/09/2017' 
driver.execute_script(cmd_d2) 

它完美,除了那些隱藏在More Options按鈕的日期字段。我如何插入值?

+0

崗位培訓相關的HTML請 – Sighil

+0

的HTML太大 –

+0

http://www.wg-gesucht.de/en/wg-zimmer-in-Berlin.8.0.1.0.html –

回答

2

選項1 - 點擊「更多選項」單擊展開panle,使輸入的日期字段可見

// click 'More Options' click 
driver.find_element_by_css_selector('a.show_more_filters').click() 
// input begin date 
driver.find_element_by_css_selector('#date_from_input').send_keys('31/08/2017') 
// input end date 
driver.find_element_by_css_selector('#date_to_input').send_keys('01/09/2017') 

:send_keys()可能觸發日期選擇器彈出和韓元「T關閉它正確, 未封閉的日期選擇器將阻止下面地址和距離文本框中輸入

選項2 - 使用execute_script()注入和在瀏覽器上執行javascript以設置日期輸入字段的值作爲靜默方式。

// click 'More Options' click 
driver.find_element_by_css_selector('a.show_more_filters').click() 
// input begin date 
begin_date_ele = driver.find_element_by_css_selector('#date_from_input') 
driver.execute_script('arguments[0].value=arguments[1]', begin_date_ele, '31/08/2017') 

// input end date 
end_date_ele = driver.find_element_by_css_selector('#date_to_input') 
driver.execute_script('arguments[0].value=arguments[1]', end_date_ele, '01/09/2017') 
+0

感謝。第二個選項每次都有效。然而,提交不起作用'driver.find_element_by_xpath(「// button [@ class ='filter_submit_button']」)。click()' –

+0

driver.finde_element_by_css_selector('button.filter_submit_button')。click() – yong

+0

推薦使用css選擇器作爲第一個選項,除非css選擇器無法解決您的問題,那麼xpath是第二個選項。 css選擇器比xpath簡單且比xpath定位器相同,並且css選擇器的速度比xpath定位器元素快。 – yong