我对Selenium和javascript不熟悉,但是我正在尝试编写Python,它将更改体育比赛结果的日期。记分牌页面的顶部是
<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)
我也尝试了其他一些方法,但是没有任何效果。加载圆圈将显示正在发生某些事情,但是默认日期不会更改。在这里的任何帮助将不胜感激。 (我也尝试按照此处的正确格式进行设置,但是对于任何错误我深表歉意,这是我第一次发布)。
答案 0 :(得分:0)
您的代码不起作用,因为您必须在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
希望有帮助
答案 1 :(得分:0)
input_date = <date in format expected>
return_val = driver.execute_script("return changedate(arguments[0])", input_date)
这可以帮助您避免所有细微差别使用字符串或“或”。
答案 2 :(得分:0)
我最终用以下方法解决了这个问题:
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()
感谢大家的帮助!