目前,我正在使用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)
我可以知道为什么硒会以这种方式起作用吗?对此有解决方案。
答案 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)
确保返回正确的元素。然后相应地更改事件名称。