使用Splinter发送密钥

时间:2015-02-10 11:15:28

标签: python django splinter python-behave

我想使用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()

1 个答案:

答案 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_*(...)