2017-07-04 6 views
-1

私は日付ボックスをクリックして値を消去し、新しいデータを要求しています。日付フィールドをクリックしようとしていますが、予定通りにカレンダーポップアップが表示されません。どうすればこのことができますか?セレンの問題

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox(executable_path='/home/usch/Desktop/PyCharm/Project/geckodriver') 

#load up website 
driver.get('https://www.fxstreet.com/economic-calendar') 

time.sleep(10) 

#close popup 
popup = driver.find_element_by_xpath('//button[@aria-label="Close Modal"]') 
popup.click() 

#click filter options 
filter = driver.find_element_by_id('fxit-advlink') 
filter.click() 


#set start and end time 
startDate = driver.find_element_by_xpath("//input[contains(@id,'fxit-start-advanced')]") 
startDate.send_keys(Keys.ENTER) 
startDate.clear() 
startDate.send_keys("01/02/2017") 
startDate.send_keys(Keys.ENTER) 

endDate = driver.find_element_by_xpath("//input[contains(@id,'fxit-end-advanced')]") 
endDate.send_keys(Keys.ENTER) 
endDate.clear() 
endDate.send_keys("06/01/2017") 
endDate.send_keys(Keys.ENTER) 

#driver.switch_to.default_content() 
#select countries 

#select data type 
category = driver.find_element_by_xpath('//a[@class="fxst-selectall" and @data-name="fxst-category"]').click() 


#refresh your results 
refresh = driver.find_element_by_xpath('//a[@id="fxit-filterbutton"]').click() 
+0

カレンダーは非常に速く表示され、消えています。セレンは速く動くようにしなければなりませんが、待っていてしばらくそれを見たいですか? –

+0

私はそれを行ごとに実行しても、カレンダーは表示されません –

+0

毎回設定した後にtime.sleep(5)を追加したので、正しくポップされたので、あなたのコードに関連しているとは思わない –

答えて

0

問題は、それが

に動作します

はちょうどあなたのコード内でexecute_script()を追加「要素はクリック可能な他の要素がクリック受け取ることになりません」というエラーがスローされます上記のコードを実行しようとすると、ロケータであります

フィルタのpython

filter1 = driver.find_element_by_css_selector('#fxit-advlink') 
driver.execute_script("arguments[0].click();", filter1) 

category = driver.find_element_by_xpath('//a[@class="fxst-selectall" and @data-name="fxst-category"]') 
driver.execute_script("arguments[0].click();", category) 

#refresh your results 
refresh = driver.find_element_by_xpath('//a[@id="fxit-filterbutton"]') 
driver.execute_script("arguments[0].click();", refresh) 
のキーワードがあるとしても、あなたのコーディングでの予約語を使用することはありません
+0

これは正しい答えです –

+0

答えとしてそれを受け入れてください – thebadguy

関連する問題