我刚接触selenium和javascript,但我正在尝试编写Python来更改体育比赛结果的日期。记分板页面的顶部有一个< MM/DD/YYYY >。“当前”日期(加载页面时,默认打开日期为2018年1月5日)位于中间,<&>有:
<a href="javascript:changeDate('01/05/2018');"><</a>
" 01/05/2018 "
<a href="javascript:changeDate('01/07/2018);">></a> ==$0
<form name="params_form" action="/team/schedule_list" method="post">
<input id="params_form_schedule_date" type="hidden" name="schedule_date"
value="01/05/2018"> == $0
</form>
在早些时候的html中,该站点有:
<script language="javascript">
function changeDate(val){
$('#params_form_schedule_date').val(val);
document.params_form.submit();
}
在Python中,我尝试过:
date = input ('Enter Date (mm/dd/yyyy): ')
driver.execute_script('changeDate()', date)
driver.execute_script('''
var date = arguments[0];
changeDate().value;''', date)
我也尝试了其他一些方法,但都不起作用。加载圈将显示正在发生的事情,但默认日期不会更改。这里的任何帮助都将不胜感激。(我也试着在这里遵循正确的格式,但我为任何错误道歉,这是我第一次发帖)。
发布于 2018-08-18 07:07:39
您的代码无法工作,因为您必须在driver.execute_script()中发送changeDate( val )的参数val。
您可以执行以下操作:
date = '02/05/2018'
driver.execute_script("changeDate('{}')".format(date)) # Just pay attention to the " and the ' in the command
希望能有所帮助
发布于 2018-08-18 11:53:13
input_date = <date in format expected>
return_val = driver.execute_script("return changedate(arguments[0])", input_date)
这可以帮助您避免使用字符串或“或”的所有细微差别。
发布于 2018-08-18 12:00:59
我最终用以下方法解决了这个问题:
date = input ('Enter Date (mm/dd/yyyy): ')
element=driver.find_element_by_css_selector("input[id=params_form_schedule_date]")
driver.execute_script('arguments[0].setAttribute("value", "%s")' % date, element)
element.submit()
感谢大家的帮助!
https://stackoverflow.com/questions/51903521
复制相似问题