我想使用Splinter测试自动完成框。我需要发送' down'和'进入'键入浏览器但我在执行此操作时遇到问题。
我目前正在寻找一个输入框并输入' tes'成功进入那个盒子
context.browser.find_by_xpath(\\some\xpath\).first.type('tes')
我接下来要做的是将一些密钥发送到浏览器,特别是' down'键(选择第一个自动填充建议)然后发送'输入'键选择该自动完成元素。
我尝试过大量搜索,无法弄清楚如何执行此操作。
我甚至试过了一些javascript
script = 'var press = jQuery.Event("keypress"); press.keyCode = 34; press.keyCode = 13;'
context.browser.execute_script(script)
但遗憾的是,这并没有做任何事情
我正在使用的包裹:
django 1.6 Django的循规蹈矩== 0.1.2 分裂0.6当前配置是:
来自splinter.browser导入浏览器
来自django.test.client import Client
context.browser = Browser('chrome')
context.client = Client()
答案 0 :(得分:4)
您可以通过切换到活动元素来发送密钥:
from selenium.webdriver.common.keys import Keys
context.browser.find_by_xpath('//input[@name="username"]').first.type('test')
active_web_element = context.browser.driver.switch_to_active_element()
active_web_element.send_keys(Keys.PAGE_DOWN)
active_web_element.send_keys(Keys.ENTER)
活动元素将是您与之交互的最后一个元素,因此在这种情况下您键入的字段。
switch_to_active_element()
会返回selenium.webdriver.remote.webelement.WebElement
,而不是splinter.driver.webdriver.WebDriverElement
,因此很遗憾,您无法直接在send_keys
的返回值上调用find_by_*(...)
。