Javascript “国际日期”;“字符串”;是减法,而不是保留其原始格式

Javascript “国际日期”;“字符串”;是减法,而不是保留其原始格式,javascript,python,python-2.7,selenium,selenium-webdriver,Javascript,Python,Python 2.7,Selenium,Selenium Webdriver,在使用Python的Selenium时,我试图以以下格式“注入”(我的术语,一个execute\u script()call的b/c)一个国际日期字符串: date_string = `"2015-05-15"` 不幸的是,注入date_字符串会导致减法而不是字符串(date_字符串在本例中等于1995)。以下是相关代码段的外观: element = self.wait.until(EC.visibility_of_element_located((By.XPATH, '//input[@

在使用Python的Selenium时,我试图以以下格式“注入”(我的术语,一个
execute\u script()
call的b/c)一个国际日期字符串:

date_string = `"2015-05-15"`  
不幸的是,注入
date_字符串
会导致减法而不是字符串(
date_字符串
在本例中等于
1995
)。以下是相关代码段的外观:

element = self.wait.until(EC.visibility_of_element_located((By.XPATH, '//input[@id="ad_start_date"]'))) #locate the element
self.driver.execute_script("document.getElementById('ad_start_date').value = {0};".format("2015-05-15")) #"inject" the `date_string` which surprisingly results in `1995`
因此,换句话说,我找到了相关元素(一个日期字段),然后尝试通过JavaScript注入
event\u date
。我怀疑问题出在
value={}
行或
format()
方法上(因为
format()
似乎有问题)

我已经尝试了我所能想到的一切来测试我的
format()
假设,包括试图避开破折号(“2015-\05-15”)、避开花括号(
{{0}}
),用
str()
方法包装字符串,以及在
format()
方法本身中构造
日期字符串
(例如,
格式(“2015”+“-”+“05”+“-”+“+”-“+“15”)
)。此外,我试图完全避免
格式()
,而是依赖
%s
。它们都会导致
1995
,而不是
2015-05-15


我有点不知所措,因为我不知道如何避免这个问题,而这正是网站需要的格式。还有其他人遇到过这个问题吗?提前感谢您的帮助。

格式功能不是问题,但请看以下内容:

>>> "document.getElementById('ad_start_date').value = {0};".format("2015-05-15")
"document.getElementById('ad_start_date').value = 2015-05-15;"
日期不再是字符串,而是整数

修理 您可以通过添加额外的撇号来解决此问题:
date\u string='“2015-05-15”
普通撇号确保它是Python的字符串,双撇号确保它是Javascript的字符串

>>> "document.getElementById('ad_start_date').value = {0};".format('"2015-05-15"')
'document.getElementById(\'ad_start_date\').value = "2015-05-15";'

这有点不方便,但您可以使用datepicker api:

var d="2015-05-15";
var dateFormated = $.datepicker.formatDate('yy-mm-dd', new Date(d));