输入后网页未刷新

时间:2019-09-10 01:04:53

标签: javascript python selenium

目前,我正在使用Selenium python自动化网站。我遇到这样的问题,即当我手动将J590输入到目标textbox时,我将不得不单击网站上的任何位置或按下选项卡,这将刷新网站,并且下拉菜单中提供了一个选项框。但是,硒似乎并没有为我刷新页面。

在将click()发送到J590之前和之后,我都尝试使用textbox,在发送send_keys(Keys.TAB)之后,我也尝试使用J590,但是没有任何作用。

这是我用来发送inputs

的代码
driver.execute_script("document.getElementById('CustCd').value+="+ dumps(jcode))

这是我发送input

后尝试的代码
driver.find_element_by_xpath('//*[@id="Item"]/form/center/input[2]').click()
or
driver.find_element_by_xpath('//*[@id="CustCd"]').send_keys(Keys.TAB)

我可以知道为什么硒会以这种方式起作用吗?对此有解决方案。

1 个答案:

答案 0 :(得分:1)

当您使用js输入数据时,跳出或单击页面中的另一个元素时,似乎触发了键盘/更改事件。因此,您必须dispatch(模拟)相应的事件。

请参阅this帖子以了解与元素相关的事件。

如果要触发某个元素的onchange事件,那么应该首先获取该元素。

ele = driver.find_element_by_xxxx(yyy)

然后使用js将事件发送到元素,如下所示。

driver.executeScript("arguments[0].dispatchEvent(new Event('change', {'bubbles': true,'cancelable': true}));",ele)

确保返回正确的元素。然后相应地更改事件名称。