Selenium未向我的gwt-SuggestBox发送键入内容
我正在使用selenium,使用python脚本来测试一个网页,这个网页上有一个gwt-SuggestBox:
<div id="streamSuggestBox">
<table> <tbody><tr> <td> <div class="gwt-Label errorText">Stream:</div> </td>
<td> <div><input type="text" class="gwt-SuggestBox"></div> </td>
</tr> </tbody></table>
</div>
selenium可以找到这个div和输入框:
(Pdb) sugInput = self.driver.find_element_by_id("streamSuggestBox").find_element_by_tag_name("input")
(Pdb) p sugInput.tag_name
u'input'
如果输入框里有文字,sugInput.clear()
可以把它清空。
但问题是,sugInput.send_keys("s")
不起作用——输入框里什么都不显示,也没有出现建议。那我该怎么在我的gwt-SuggestBox里输入数据呢?
2 个回答
0
你可以尝试直接设置 value
属性。抱歉,下面的代码是用C#写的,但在Python中概念应该是一样的:
string script = "arguments[0].setAttribute('value', argument[1])";
IWebElement suggestionBox = //find it somehow...
driver.ExecuteScript(script, suggestionBox , "I typed this!");
重点是使用JavaScript直接修改元素的值属性。Selenium这个工具在它的接口中并没有直接支持这个功能,因为他们认为用户不会直接去修改一个值。不过,有时候对于一些“难搞”的对象,这种方法是必要的,可以作为一种解决办法。
0
你可能需要模拟一个按键操作,这样输入才能开始工作。下面是如何用Python实现上面的C#示例:
el = self.driver.find_element_by_xpath("//div[@id='streamSuggestBox']/input[@class='gwt-SuggestBox']")
script = "arguments[0].setAttribute('value', argument[1])"
self.driver.execute_script(script,el,[value])
要触发建议功能,你可以这样做:
el = self.driver.find_element_by_xpath("//div[@id='streamSuggestBox']/input[@class='gwt-SuggestBox']")
el.send_keys("s")
el.send_keys(Keys.TAB)
根据绑定到建议输入的按键,这个方法可能会有效。