代码之家  ›  专栏  ›  技术社区  ›  barlop Sandeep

在带有硒元素的Ruby中,很难以编程方式发送Enter键

  •  0
  • barlop Sandeep  · 技术社区  · 7 年前

    在含硒的Ruby中,我很难通过编程方式发送Enter键。

    我设法以编程方式在firefox中加载google.com并将密钥发送到搜索框中。

    我可以手动点击Enter,这很有效,但我想通过编程方式点击Enter。我尝试以编程的方式点击enter还没有成功。

    这是加载页面并在搜索框中输入文本。工作原理:

    irb(main):001:0> require 'selenium-webdriver'
    => true
    
    irb(main):002:0> driver = Selenium::WebDriver.for:firefox
    => #<Selenium::WebDriver::Firefox::Marionette::Driver:0x..fb3c81796cc82b708 browser=:firefox>
    
    irb(main):003:0> driver.navigate().to("http://www.google.com")
    => nil
    
    irb(main):004:0> inps=driver.find_elements(:tag_name, "input");
    => [#<Selenium::WebDriver::Element:0x..fbd90f502ff3e0576 id="534cf85c-1315-994f-ba72-0eae5f6ada73">, #<Selenium::WebDriver::Element:0x2c3d35f89c794
    
    irb(main):080:0> driver.find_element(:name, "q").send_keys("abab");
    => nil
    

    所以,最重要的是一切正常,并将文本放入搜索框。

    现在以编程方式点击Enter:

    driver.find_element(:name, "q").send_keys("\n"); 
    
    driver.find_element(:name, "q").send_keys("aaa\n"); 
    
    driver.action.send_keys("\n").perform
    

    三行中的每一行 \u0006 而不是 \n .

    三行中的每一行 \u0007 而不是 \n .

    它不起作用。

    这个 \n 没有视觉效果。以及 U00 06 U00 07 只需在文本框中显示特殊字符。

    我试着把它送到尸体上:

    irb(main):087:0> b=driver.find_element(:tag_name, "body")
    => #<Selenium::WebDriver::Element:0x45552f31d66411fa id="ce2a065b-c12a-1740-82ee-68bcf8a43ead">
    irb(main):088:0> b.send_key("\n");
    => nil
    irb(main):089:0> b.send_key("\n");
    => nil
    irb(main):090:0> b.send_key("\u0006");
    => nil
    irb(main):091:0> b.send_keys("\u0007");
    => nil
    irb(main):092:0> b.send_keys("\n");
    

    enter image description here

    这是同一个问题。 \u 使字符显示在框中。 \n 没有视觉效果。他们两个都没有发送一个回车键作为手动按回车键的方式。

    2 回复  |  直到 7 年前
        1
  •  1
  •   barlop Sandeep    7 年前

    您可以尝试以下代码来点击“回车”键:

    driver.find_element(:name, "q").send_keys:return
    
        2
  •  -1
  •   Todor Minakov    7 年前

    试一试 \ue007 :

    driver.find_element(:name, "q").send_keys("\ue007");
    

    编辑:因为这可能并不明显,所以我提议的代码与您尝试过的代码不同。它还有一个附加的“e”字符,这使得它成为一个完全不同的Unicode代码。

    另外,如果你检查硒的来源- https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/common/keys.rb -此代码- UEO7 ,定义为返回键。呼唤 send_keys:return 准确发送此代码。

    Hth.