Sending Keys Using Splinter

╄→尐↘猪︶ㄣ 提交于 2020-08-22 05:36:47

问题


I want to test an autocomplete box using Splinter. I need to send the 'down' and 'enter' keys through to the browser but I'm having trouble doing this.

I am currently finding an input box and typing 'tes' into that box successfully

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

What I want to do next is to send some keys to the browser, specifically the 'down' key (to select the first autocomplete suggestion) then send the 'enter' key to select that autocomplete element.

I've tried extensive searches and can't figure out how to do this.

I even tried some javascript

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

but that didn't do anything unfortunately

packages I'm using:

django 1.6 django-behave==0.1.2 splinter 0.6

current config is:
from splinter.browser import Browser from django.test.client import Client

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

回答1:


You can send keys by switching to the active element:

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)

The active element will be the last element you interacted with, so in this case the field you typed in.

switch_to_active_element() returns a selenium.webdriver.remote.webelement.WebElement, not a splinter.driver.webdriver.WebDriverElement, so unfortunately you cannot call send_keys on the return value of find_by_*(...) directly.



来源:https://stackoverflow.com/questions/28430274/sending-keys-using-splinter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!