Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python和Selenium键入回车键_Python_Selenium_Automation_Keypress_Enter - Fatal编程技术网

使用Python和Selenium键入回车键

使用Python和Selenium键入回车键,python,selenium,automation,keypress,enter,Python,Selenium,Automation,Keypress,Enter,我正在寻找一种在Selenium中键入Enter或Return键的快速方法 不幸的是,我尝试测试的表单(不是我自己的代码,所以我无法修改)没有提交按钮。手动使用它时,我只需键入Enter或Return。由于没有可点击的按钮,如何使用Selenium键入命令来实现这一点?现在Selenium 2已经发布,发送回车键就更容易了,因为您可以使用Selenium.webdriver.remote.webelement类的send_keys方法来实现(此示例代码使用Python,但Java中存在相同的方法

我正在寻找一种在Selenium中键入Enter或Return键的快速方法


不幸的是,我尝试测试的表单(不是我自己的代码,所以我无法修改)没有提交按钮。手动使用它时,我只需键入Enter或Return。由于没有可点击的按钮,如何使用Selenium
键入
命令来实现这一点?

现在Selenium 2已经发布,发送回车键就更容易了,因为您可以使用
Selenium.webdriver.remote.webelement
类的
send_keys
方法来实现(此示例代码使用Python,但Java中存在相同的方法):

selenium.keyPress("css=input.tagit-input.ui-autocomplete-input", "13");

我只是想指出,我在Cucumber测试中需要它,并发现如果您想模拟按enter/return键,则需要发送
:return
值,而不是
:enter
值(请参阅所述值)


import
语句是针对Java的。对于其他语言,它可能不同。例如,在Python中,它是来自selenium.webdriver.common.keys import keys的
,您只需执行以下操作:

final private WebElement input = driver.findElement(By.id("myId"));
input.clear();
input.sendKeys(value); // The value we want to set to input
input.sendKeys(Keys.RETURN);

对于使用WebDriverJS
键的用户。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;
};

它也可以通过操作界面来实现-

WebElement username = driver.findElement(By.name("q"));
username.sendKeys(searchKey);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
action.perform();

尝试使用XPath表达式搜索元素,然后,以下代码可以正常工作:

driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);
您可以尝试:

selenium.keyPress("id="", "\\13");

编写HTML测试时,ENTER键可用作
${key\u ENTER}

您可以将其与
发送键一起使用,下面是一个示例:

sendKeys | id=search | ${KEY_ENTER}
JAVA 或者


python 或者

或者


红宝石 或者

或者


C# 或者

对于Ruby:

driver.find_element(:id, "XYZ").send_keys:return
对于Java:

selenium.keyPress("elementID", "\13");
driver.findElement(By.id("elementID")).sendKeys(Keys.ENTER);
对于使用Java的Selenium WebDriver(又称Selenium 2):

selenium.keyPress("elementID", "\13");
driver.findElement(By.id("elementID")).sendKeys(Keys.ENTER);
或者

在WebDriver中按Enter键的另一种方法是使用Actions类:


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

或者

我必须在文本的中间发送回车键,所以我通过下面的文本发送KEY函数来实现<代码> 1 \N2\N3:

1\N{U+E007}2\N{U+E007}3

如果您处于这种特定情况:

a) 只需按一下键,但您没有特定的webElement可供单击

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

那么解决办法是:

    Actions builder = new Actions(webDriverInstance);
    builder.sendKeys(Keys.RETURN).perform();
如果您正在寻找“如何在SeleniumWebDriver(Java)中从键盘按Enter键”,那么下面的代码肯定会对您有所帮助

// Assign a keyboard object
Keyboard keyboard = ((HasInputDevices) driver).getKeyboard();

// Enter a key
keyboard.pressKey(Keys.ENTER);
driver.findElement(By.id(“Value”)).sendKeys(key.RETURN)
driver.findElement(By.id(“Value”)).sendKeys(Keys.ENTER)

#输入=u'\ue007'


请参阅Selenium的文档“特殊密钥”。

要使用Selenium输入密钥,首先需要导入以下库:

import org.openqa.selenium.Keys
然后将此代码添加到要输入密钥的位置

WebElement.sendKeys(Keys.RETURN);

您可以根据需要将RETURN替换为列表中的任意键。

Java/JavaScript:

您可能也可以这样做,非本地的

public void triggerButtonOnEnterKeyInTextField(String textFieldId, String clickableButId)
{
    ((JavascriptExecutor) driver).executeScript(
        "   elementId = arguments[0];
            buttonId = arguments[1];
            document.getElementById(elementId)
                .addEventListener("keyup", function(event) {
                    event.preventDefault();
                    if (event.keyCode == 13) {
                        document.getElementById(buttonId).click();
                    }
                });",

        textFieldId,
        clickableButId);
}

按-C#键有以下几种方法:


当您不想搜索任何定位器时,可以使用Robot类。比如说,

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

您可以使用
键中的任意一个。输入
键。返回
。以下是一些细节:

用法:
  • 爪哇:

  • 使用
    键。输入

         import org.openqa.selenium.Keys;
         driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
    
         from selenium.webdriver.common.keys import Keys
         driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
    
  • 使用
    键。返回

         import org.openqa.selenium.Keys;
         driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
    
         from selenium.webdriver.common.keys import Keys
         driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
    
  • Python:

  • 使用
    键。输入

         import org.openqa.selenium.Keys;
         driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
    
         from selenium.webdriver.common.keys import Keys
         driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
    
  • 使用
    键。返回

         import org.openqa.selenium.Keys;
         driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
    
         from selenium.webdriver.common.keys import Keys
         driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
    
键。输入
键。返回
这两个键都来自
org.openqa.selenium.Keys
,它扩展了
java.lang.Enum
>


枚举键 枚举键表示非文本的可按键。它们存储在Unicode PUA()代码点0xE000-0xF8FF中

关键代码: 它们的特殊
键代码如下所示:

  • 返回=
    u'\ue006'
  • 输入=
    u'\ue007'
所有
枚举键的实现都以相同的方式处理

因此,在使用任何一个发送键(key.ENTER)时,这些键都是功能性的或操作性的
WebElement.sendKeys(Keys.RETURN)通过


输入键和返回键 在计算机键盘上,大多数情况下,回车键(或Mac OS X上的回车键)会导致命令行、窗口窗体或对话框运行其默认功能。这通常用于完成“输入”并开始所需的过程,通常是按下OK按钮的替代方法

返回通常也称为输入,它们通常执行相同的功能;但是,在某些特定的应用程序(主要是页面布局)中,Return的操作方式与它所使用的回车键类似。相比之下,Enter通常在普通PC键盘上用纯文本标记其名称


工具书类

对于所有使用JavaScript/Node.js的人来说,这对我来说很有效:

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
用Python

步骤1。
来自selenium.webdriver.common.keys导入密钥

第2步。
驱动程序。按名称(“”)查找元素。发送键(key.ENTER)

注意:您必须编写
键。输入

您可以调用// Assign a keyboard object Keyboard keyboard = ((HasInputDevices) driver).getKeyboard(); // Enter a key keyboard.pressKey(Keys.ENTER);
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')
import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);
public void triggerButtonOnEnterKeyInTextField(String textFieldId, String clickableButId)
{
    ((JavascriptExecutor) driver).executeScript(
        "   elementId = arguments[0];
            buttonId = arguments[1];
            document.getElementById(elementId)
                .addEventListener("keyup", function(event) {
                    event.preventDefault();
                    if (event.keyCode == 13) {
                        document.getElementById(buttonId).click();
                    }
                });",

        textFieldId,
        clickableButId);
}
Driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);
OpenQA.Selenium.Interactions.Actions action = new OpenQA.Selenium.Interactions.Actions(Driver);
action.SendKeys(OpenQA.Selenium.Keys.Escape);
IWebElement body = GlobalDriver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Escape);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
object.sendKeys("your message", Keys.ENTER);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
     import org.openqa.selenium.Keys;
     driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
     import org.openqa.selenium.Keys;
     driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
     from selenium.webdriver.common.keys import Keys
     driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
     from selenium.webdriver.common.keys import Keys
     driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
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
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

action = ActionChains(driver)
action.send_keys(Keys.ENTER)
action.perform()