问题
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