我正在寻找一种快速的方法来键入进入或返回键在硒。

不幸的是,我试图测试的表单(不是我自己的代码,所以我不能修改)没有Submit按钮。当手动使用它时,我只需输入Enter或Return。我怎么能做到这一点与硒类型命令,因为没有按钮点击?


当前回答

对于使用XPath的Selenium WebDriver(如果键是可见的):

driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.ENTER);

or,

driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.RETURN);

其他回答

对于那些使用WebDriverJS key的人。RETURN将被引用为

webdriver.Key.RETURN

一个更完整的例子作为参考可能也会有所帮助:

var pressEnterToSend = function () {
    var deferred = webdriver.promise.defer();
    webdriver.findElement(webdriver.By.id('id-of-input-element')).then(function (element) {
        element.sendKeys(webdriver.Key.RETURN);
        deferred.resolve();
    });

    return deferred.promise;
};

如果你是在这种情况下:

a)只是想按下键,但你没有一个特定的webElement来点击

b)您正在使用Selenium 2 (WebDriver)

那么解决方案是:

    Actions builder = new Actions(webDriverInstance);
    builder.sendKeys(Keys.RETURN).perform();

您可以在输入文本的元素对象上调用submit()。

或者,你也可以将Enter键发送给它,如下面的Python代码片段所示:

from selenium.webdriver.common.keys import Keys
element.send_keys(Keys.ENTER) # 'element' is the WebElement object corresponding to the input field on the page

我必须在文本中间输入回车键。于是我通过下面的文本发送键函数来实现1\n2\n3:

1\N{U+E007}2\N{U+E007}3
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

“进来”

参考Selenium的文档“Special Keys”。