<input name="DateBeginDate" type="text" onchange="javascript:setTimeout('__doPostBack('DateBeginDate','')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="DateBeginDate" disabled="disabled" onclick="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})" />根據這段代碼,使用的這個方法date_input = driver.find_element_by_xpath("//input[@name='DateBeginDate']") driver.execute_script("arguments[0].removeAttribute('readonly');", date_input) driver.execute_script("arguments[0].removeAttribute('disabled');", date_input) driver.execute_script("arguments[0].onchange = null;", date_input) # 禁用 onchange 事件 date_input.clear() # 清空输入框内容 date_input.send_keys("2022-12-31") 還是最後會被清空
时间: 2023-11-12 19:06:11 浏览: 50
根据你提供的代码和描述,`DateBeginDate`输入框可能存在其他脚本或事件导致输入的日期被清空。在这种情况下,禁用`onchange`事件可能无法解决问题。
你可以尝试使用`execute_script`方法直接设置输入框的值,而不是模拟键盘输入。以下是一个修改后的代码示例:
```python
date_input = driver.find_element_by_xpath("//input[@name='DateBeginDate']")
driver.execute_script("arguments[0].removeAttribute('readonly');", date_input)
driver.execute_script("arguments[0].removeAttribute('disabled');", date_input)
driver.execute_script("arguments[0].value = '2022-12-31';", date_input)
```
通过使用`driver.execute_script("arguments[0].value = '2022-12-31';", date_input)`,我们直接设置了输入框的值为"2022-12-31",而不是模拟键盘输入。
请尝试运行修改后的代码,并查看是否仍然会在设置日期后被清空。如果问题仍然存在,请确保没有其他事件或脚本会在设置日期后清空该输入框的值。如果有其他操作,请提供更多相关的代码和细节,以便更好地帮助你解决问题。
相关问题
<input name="DateBeginDate" type="text" onchange="javascript:setTimeout('__doPostBack(\'DateBeginDate\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="DateBeginDate" disabled="disabled" onclick="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})" />什麽意思
这段代码是一个HTML输入元素,用于显示日期选择器,并且在选择日期时触发相应的事件。
具体解释如下:
- `name="DateBeginDate"`:设置输入元素的名称为"DateBeginDate",在提交表单时,该名称将作为键来传递输入值。
- `type="text"`:指定输入元素的类型为文本输入框。
- `onchange="javascript:setTimeout('__doPostBack(\'DateBeginDate\',\'\')', 0)"`:当输入框的值发生改变时,触发一个JavaScript函数`__doPostBack()`,并将"DateBeginDate"作为参数传递给它。
- `onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;"`:在按下键盘按键时,执行一个JavaScript函数`WebForm_TextBoxKeyHandler()`,如果该函数返回false,则阻止按键的默认行为。
- `id="DateBeginDate"`:指定输入元素的唯一标识符为"DateBeginDate",可以通过该标识符在JavaScript中操作该元素。
- `disabled="disabled"`:禁用输入元素,使其无法编辑或选择。
- `onclick="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})"`:当点击输入框时,调用名为"WdatePicker"的JavaScript函数,该函数会显示一个日期选择器,配置日期格式为"yyyy-MM-dd",并将输入框设置为只读模式,不允许手动输入日期。
总体来说,这段代码是一个禁用的文本输入框,点击输入框会弹出一个日期选择器,选择日期后会触发相应的事件。
<span id="Label15">開始日期:</span> </td> <td class="TDValue"> <input name="DateBeginDate" type="text" onchange="javascript:setTimeout('__doPostBack(\'DateBeginDate\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="DateBeginDate" disabled="disabled" onclick="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})" /> </td>是這個代碼
根据您提供的代码,这是一个包含标签和输入框的HTML表格行。具体代码如下:
```html
<tr>
<td>
<span id="Label15">開始日期:</span>
</td>
<td class="TDValue">
<input name="DateBeginDate" type="text" onchange="javascript:setTimeout('__doPostBack(\'DateBeginDate\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="DateBeginDate" disabled="disabled" onclick="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})" />
</td>
</tr>
```
这段代码包含了一个表格行(`<tr>`)和两个表格单元格(`<td>`)。在第一个单元格中,有一个带有`id="Label15"`的`<span>`标签,显示文本内容为"開始日期:"。在第二个单元格中,有一个输入框,其属性和事件如下:
- `name="DateBeginDate"`:输入框的名称为"DateBeginDate"。
- `type="text"`:输入框的类型为文本输入框。
- `onchange="javascript:setTimeout('__doPostBack(\'DateBeginDate\',\'\')', 0)"`:当输入框的值发生改变时,会执行一个JavaScript函数`__doPostBack('DateBeginDate','')`,该函数可能会触发一个后端事件或提交表单。
- `onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;"`:当按下键盘按键时,会执行一个JavaScript函数`WebForm_TextBoxKeyHandler(event)`,如果该函数返回false,则阻止按键的默认行为。
- `id="DateBeginDate"`:输入框的唯一标识符为"DateBeginDate"。
- `disabled="disabled"`:输入框被禁用,无法进行编辑。
- `onclick="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})"`:当点击输入框时,会执行一个JavaScript函数`WdatePicker()`,该函数可能会显示一个日期选择器,并将日期格式设置为"yyyy-MM-dd",同时禁用日期选择器的编辑功能。
综合来看,这段代码定义了一个禁用且具有日期选择器的输入框,点击输入框时可以选择日期,但无法手动编辑日期。当选择日期后,可能会触发一个后端事件或提交表单。在输入框前面还有一个标签显示"開始日期:"。