【问题标题】:Sending Keys Using Splinter使用 Splinter 发送密钥
【发布时间】:2015-02-10 11:15:28
【问题描述】:

我想使用 Splinter 测试一个自动完成框。我需要将“向下”和“输入”键发送到浏览器,但我在执行此操作时遇到了麻烦。

我目前正在找到一个输入框并成功在该框中输入“tes”

context.browser.find_by_xpath(\\some\xpath\).first.type('tes')

接下来我要做的是向浏览器发送一些键,特别是“向下”键(选择第一个自动完成建议),然后发送“输入”键以选择该自动完成元素。

我已经尝试了广泛的搜索,但无法弄清楚如何做到这一点。

我什至尝试了一些javascript

script = 'var press = jQuery.Event("keypress"); press.keyCode = 34; press.keyCode = 13;'
context.browser.execute_script(script)

但不幸的是,这并没有做任何事情

我正在使用的包:

django 1.6 django-behave==0.1.2 分裂0.6

当前配置是:
从 splinter.browser 导入浏览器 从 django.test.client 导入客户端

context.browser = Browser('chrome')
context.client = Client()

【问题讨论】:

    标签: python django splinter python-behave


    【解决方案1】:

    您可以通过切换到活动元素来发送密钥:

    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,所以很遗憾你不能直接在find_by_*(...) 的返回值上调用send_keys

    【讨论】:

    • 致任何面临模态问题的人:您可以通过 id 选择模态,然后发送 Keys.ESCAPE 以摆脱它。
    猜你喜欢
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多