如何通过在SeleniumRuby中启动javascript来选择日期?

如何通过在SeleniumRuby中启动javascript来选择日期?,javascript,jquery,ruby,selenium,Javascript,Jquery,Ruby,Selenium,我试图在日期选择器字段中选择一个日期,我希望能够通过在SeleniumWebDriver上启动javascript来实现这一点。我尝试了下面的方法,可以转到日期窗口,但是我认为应该有办法在@driver.execute_script()中启动javascript。 这里有javascript专家帮忙吗 require 'selenium-webdriver' @browser = Selenium::WebDriver.for :chrome @browser.navigate.to 'h

我试图在日期选择器字段中选择一个日期,我希望能够通过在SeleniumWebDriver上启动javascript来实现这一点。我尝试了下面的方法,可以转到日期窗口,但是我认为应该有办法在@driver.execute_script()中启动javascript。 这里有javascript专家帮忙吗

require 'selenium-webdriver'


@browser = Selenium::WebDriver.for :chrome

@browser.navigate.to 'http://adam.goucher.ca/parkcalc/'

@browser.find_element(:xpath => "//img[@alt='Pick a date']").click

#collect all window handles
window_handles =  @browser.window_handles.length

# printing the window ids
@browser.window_handles.map do |window|
  p window
end

@browser.switch_to.window(@browser.window_handles.last)

@browser.find_element(:link => '4')

#sleep to watch that indeed the date is picked
sleep 5

@browser.quit

查看弹出式日历的来源,看起来如下所示将模拟选择日期(使用双分号从站点复制并粘贴):

就用你的约会代替吧

有关在Selenium中使用JavaScript的详细信息:


用文本填充日期字段可能比使用JavaScript更简单:

如果要参数化输入日期,可以使用下面的

input_date = 10/6/2014

@browser.execute_script("document.getElementById('EntryDate').value='#{input_date}';;window.close();")

你想选择这两个日期吗?你能澄清一下你想用JavaScript做什么吗?你说你想选择一个日期,但这可以用很多方式来解释。例如,您是否希望在不打开弹出窗口的情况下指定日期,或者在弹出窗口显示时单击JavaScript链接,或者在弹出窗口打开时设置日期而不单击链接等?@JustinKo:如果不打开弹出窗口,我想我们无法从日历小部件中选择日期[将日期键入为文本不是我想要的内容]。因此,我确实希望打开弹出窗口,然后启动javascript。感谢您的宝贵评论。我尝试复制代码中提到的javascript,但没有选择日期。事实上,会抛出错误“未知错误:未定义winMain”(Selenium::WebDriver::Error::UnknownError)“确定上面代码行中的一个小更改,其工作方式如下。winMain不是必需的。@browser.execute_脚本(“document.getElementById('EntryDate')。value='10/6/2014';window.close();”)。感谢大家的帮助。
input_date = 10/6/2014

@browser.execute_script("document.getElementById('EntryDate').value='#{input_date}';;window.close();")