2017-07-04 46 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