टाइपिंग / वापसी कुंजी पायथन और सेलेनियम का उपयोग कर?


260

मैं सेलेनियम में टाइप और एंटर या रिटर्न कुंजी टाइप करने के लिए एक त्वरित तरीका ढूंढ रहा हूं। दुर्भाग्य से, मैं जिस फॉर्म का परीक्षण करने की कोशिश कर रहा हूं (मेरा अपना कोड नहीं है इसलिए मैं संशोधित नहीं कर सकता) में सबमिट बटन नहीं है। मैन्युअल रूप से इसके साथ काम करते समय, मैं सिर्फ टाइप करता हूं ENTERया RETURN। मुझे यह जानने की आवश्यकता है कि सेलेनियम typeकमांड के साथ कैसे करें क्योंकि क्लिक करने के लिए कोई बटन नहीं है।



धन्यवाद, यह वही था जो मुझे चाहिए था!
क्रोइकहग

@ क्रिक्सहाग: आप क्या उपयोग कर रहे हैं? सेलेनियम आरसी या वेबड्राइवर (सेलेनियम 2)? भाषा के बारे में क्या? जावा? सी#? और क्या?
रिपन अल वसीम

@RiponAlWasim, 2009 में (जब सवाल पूछा गया) कोई WebDriver नहीं थे। साथ ही दोनों के उत्तर कुछ समय के लिए यहां दिए गए हैं ...
एलेक्स ओक्रुस्को

@AlexOkrushko: हाँ, आप सही हैं
रिपन अल वसीम

जवाबों:


296
import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

importबयान जावा के लिए है, अन्य भाषाओं के लिए यह शायद एक अलग है, उदाहरण के लिए अजगर:from selenium.webdriver.common.keys import Keys


25
मेरा मानना ​​है कि यह स्थानांतरित हो गया है। from selenium.webdriver.common.keys import Keys( stackoverflow.com/questions/5503489/… )
जेम्स ब्रॉडहेड

@ हाईजैड ब्रॉडहेड: मैंने इसे चेक किया है, वास्तविक जावा (2.17.0) के लिए कीज़ क्लास अभी भी हैorg.openqa.selenium.Keys
राल्फ

3
मुझे पता है कि वापसी दर्ज की तुलना में अलग है, लेकिन Keys.ENTER अलग कैसे है? (मुझे लगता है कि Keys.RETURN बस इसे और अधिक स्पष्ट कर देगा कि यह कार्रवाई करने वाला एक बॉट है?)
NoBrainer

1
@NoBrainer: आयातित फ़ाइल पर त्वरित देखो आपके प्रश्न का उत्तर देगा: RETURN = '\ue006' ENTER = '\ue007'। पर क्यों? कुछ अवशेष या OS अंतर।
ओमिक्रॉन

2
@ नोबलर: एंटर और रिटर्न अलग-अलग कीज़ हैं, इस विकिपीडिया लेख की छवि पर एक नज़र डालें: en.wikipedia.org/wiki/Enter_key
राल्फ

192

जावा

driver.findElement(By.id("Value")).sendKeys(Keys.RETURN);

या,

driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);

अजगर

from selenium.webdriver.common.keys import Keys
driver.find_element_by_name("Value").send_keys(Keys.RETURN)

या,

driver.find_element_by_name("Value").send_keys(Keys.ENTER)

या,

element = driver.find_element_by_id("Value")
element.send_keys("keysToSend")
element.submit()

माणिक

element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.submit

या,

element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.send_keys:return

या,

@driver.action.send_keys(:enter).perform
@driver.action.send_keys(:return).perform

सी#

driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);

या,

driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);

1
पायथन के लिए, मैंने पाया कि इनपुट स्ट्रिंग के लिए "\ n" जोड़ना सबसे सरल तरीका है। इसने एक खोज क्षेत्र में काम किया।
याकॉव

26

अब जब सेलेनियम 2 जारी किया गया है, तो एंटर कुंजी भेजना थोड़ा आसान है, क्योंकि आप इसे कक्षा की send_keysविधि के साथ कर सकते हैं selenium.webdriver.remote.webelement.WebElement(यह उदाहरण कोड पायथन में है, लेकिन जावा में भी यही तरीका मौजूद है):

>>> from selenium import webdriver
>>> wd = webdriver.Firefox()
>>> wd.get("http://localhost/example/page")
>>> textbox = wd.find_element_by_css_selector("input")
>>> textbox.send_keys("Hello World\n")

24

आप Keys.ENTERया तो का उपयोग कर सकते हैं Keys.RETURN। यहाँ कुछ विवरण हैं:

उपयोग:

  • जावा :

    • का उपयोग कर Keys.ENTER:

      import org.openqa.selenium.Keys;
      driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
      
    • का उपयोग करते हुए Keys.RETURN

      import org.openqa.selenium.Keys;
      driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
      
  • अजगर:

    • का उपयोग कर Keys.ENTER:

      from selenium.webdriver.common.keys import Keys
      driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
      
    • का उपयोग करते हुए Keys.RETURN

      from selenium.webdriver.common.keys import Keys
      driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
      

Keys.ENTERऔर Keys.RETURNदोनों से हैं org.openqa.selenium.Keys, जो विस्तार java.lang.Enum<Keys>और लागू करता हैjava.lang.CharSequence


Enum Keys

Enum Keys दबाने योग्य कुंजियों का प्रतिनिधित्व है जो पाठ नहीं हैं। ये यूनिकोड PUA ( निजी उपयोग क्षेत्र ) कोड बिंदुओं, 0xE000-0xF8FF में संग्रहीत हैं।

मुख्य कोड:

keys codesउनके लिए विशेष इस प्रकार हैं:

  • RETURN =u'\ue006'
  • एंटर =u'\ue007'

सभी के कार्यान्वयन को Enum Keysएक ही तरीके से नियंत्रित किया जाता है।

इसलिए या तो या सेलेनियम के माध्यम से काम करते समय ये कोई अंतर नहीं हैFunctionalOperationalsendKeys(Keys.ENTER);WebElement.sendKeys(Keys.RETURN);


कुंजी और वापसी कुंजी दर्ज करें

कंप्यूटर कीबोर्ड पर, Enter(या Returnमैक OSX पर) ज्यादातर मामलों में डिफ़ॉल्ट फ़ंक्शन को संचालित करने के लिए कमांड लाइन, विंडो फॉर्म या डायलॉग बॉक्स का कारण बनता है। यह आमतौर पर एक "प्रविष्टि" खत्म करने और वांछित प्रक्रिया शुरू करने के लिए है, और आमतौर पर एक ओके बटन दबाने का विकल्प है।

यह Returnभी अक्सर के रूप में संदर्भित किया जाता है Enterऔर वे आमतौर पर समान कार्य करते हैं; हालाँकि कुछ विशेष अनुप्रयोगों में (मुख्य रूप से पृष्ठ लेआउट) Returnविशेष रूप से कैरिज रिटर्न कुंजी की तरह काम करता है जिससे यह उत्पन्न होता है। इसके विपरीत, Enterआमतौर पर जेनेरिक पीसी कीबोर्ड पर सादे पाठ में इसके नाम के साथ लेबल लगाया जाता है।


संदर्भ


12

HTML परीक्षण लिखते समय, ENTER कुंजी उपलब्ध है ${KEY_ENTER}

आप इसका उपयोग कर सकते हैं sendKeys, यहाँ एक उदाहरण है:

sendKeys | id=search | ${KEY_ENTER}

11

पायथन में

चरण 1। from selenium.webdriver.common.keys import Keys

चरण 2। driver.find_element_by_name("").send_keys(Keys.ENTER)

नोट: आपको लिखना हैKeys.ENTER


9

आप बस यह करें:

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);

जिज्ञासा से बाहर, आप कोड की 3 पंक्तियों को लिखना क्यों पसंद करते हैं जिसे आप एक पंक्ति में लिख सकते हैं
शेखर स्वामी


6

उन लोगों के लिए जो WebDriverJS का उपयोग कर रहे हैं Keys.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;
};


6
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

ENTER = u '\ _ue007'

सेलेनियम प्रलेखन 'विशेष कुंजी' देखें


यह जवाब काम करता है लेकिन गलती से इसे वोट दिया क्योंकि मैंने गलत नंबर का इस्तेमाल किया।
मार्टिन केर्स्टन

5

मैं केवल यह नोट करना चाहता हूं कि मुझे अपने ककड़ी परीक्षणों के लिए इसकी आवश्यकता थी और यह पता चला कि यदि आप एंटर / रिटर्न कुंजी दबाने का अनुकरण करना चाहते हैं, तो आपको :returnमूल्य भेजने की आवश्यकता है कि :enterमूल्य ( यहां वर्णित मान देखें )


यह GWT इनपुट टेक्स्ट फ़ील्ड के लिए भी सही है।
joescii

5

जावा के साथ सेलेनियम आरसी के लिए:

selenium.keyPress("elementID", "\13");

जावा के साथ सेलेनियम वेबड्राइवर (उर्फ सेलेनियम 2) के लिए:

driver.findElement(By.id("elementID")).sendKeys(Keys.ENTER);

या,

driver.findElement(By.id("elementID")).sendKeys(Keys.RETURN);

एक्शन क्लास का उपयोग करके वेबड्राइवर में एन्टर प्रेस करने का दूसरा तरीका:

Actions action = new Actions(driver); 
action.sendKeys(driver.findElement(By.id("elementID")), Keys.ENTER).build().perform();

3

यदि आप "सेलेनियम वेबड्राइवर (जावा) में कीबोर्ड से एंट्री कुंजी कैसे दबाएं" की तलाश कर रहे हैं, तो नीचे दिए गए कोड निश्चित रूप से आपकी मदद करेंगे।

//assign key board object
Keyboard keyboard=((HasInputDevices) driver).getKeyboard();
//enter a key
keyboard.pressKey(Keys.ENTER);

1
क्या आप अपने समाधान प्रदान करने के बारे में थोड़ा और विवरण जोड़कर अपने जवाब को विस्तृत कर सकते हैं?
अबरीसोन

3

आप submit()उस तत्व ऑब्जेक्ट पर कॉल कर सकते हैं जिसमें आपने अपना टेक्स्ट दर्ज किया था।

वैकल्पिक रूप से, आप विशेष रूप से इसे दर्ज कर सकते हैं, जैसा कि इस अजगर स्निपेट में दिखाया गया है:

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

2

तत्व की खोज के लिए XPATH का उपयोग करने का प्रयास करें और फिर, निम्न कोड काम करता है:

driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);

यदि तत्व में ID है, तो xpath के बजाय ID का उपयोग करना बेहतर है
रिपन अल वसीम

2

कुंजी दबाने के निम्नलिखित तरीके हैं - C #:

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);


2

जब आप किसी लोकेटर को खोजना नहीं चाहते हैं, तो आप रोबोट वर्ग का उपयोग कर सकते हैं: जैसे:

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

2

सेलेनियम का उपयोग कर चाबियाँ दर्ज करने के लिए पहले आपको निम्नलिखित पुस्तकालय आयात करने की आवश्यकता है:

"import org.openqa.selenium.Keys"

फिर इस कोड को जोड़ें जहां आप कुंजी दर्ज करना चाहते हैं

"WebElement.sendKeys(Keys.RETURN);"

आप अपनी आवश्यकता के अनुसार RETURN को सूची से किसी भी कुंजी से बदल सकते हैं


1

WebDriver के मामले में भी एक्शन इंटरफ़ेस का उपयोग करके प्राप्त किया जा सकता है -

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



1

मुझे एक टेक्स्ट के बीच में एंटर की भेजना था। इसलिए मैंने कुंजियों को प्राप्त करने के लिए फ़ंक्शन भेजने के लिए निम्न पाठ पास किया1\n2\n3

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

1

सेलेनियम वेबड्राइवर के लिए xpath (यदि कुंजी दिखाई दे रही है) का उपयोग कर:

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

या,

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

1

यदि आप इस विशिष्ट स्थिति में हैं:

a) JUST को कुंजी दबाना चाहते हैं, लेकिन क्लिक करने के लिए एक विशिष्ट वेब-क्लेमेंट नहीं है

बी) आप सेलेनियम 2 (वेबड्राइवर) का उपयोग कर रहे हैं

तो समाधान है:

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

1

जावा / जावास्क्रिप्ट:

आप शायद इसे इस तरह से भी कर सकते हैं, गैर-देशी :

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);
}


0

जावास्क्रिप्ट / नोड का उपयोग करने वाले सभी लोगों के लिए , इसने मेरे लिए काम किया:

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.