在Ruby with Selenium中,难以以编程方式发送ENTER键

时间:2018-12-29 06:02:47

标签: ruby selenium selenium-webdriver

在带有Selenium的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没有视觉效果。 \u0006\u0007只是使特殊字符出现在文本框中。

我尝试发送到身体:

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没有视觉效果。而且他们俩都没有像手动按下ENTER键那样发送ENTER。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下代码来按“ ENTER”键:

driver.find_element(:name, "q").send_keys:return

答案 1 :(得分:-1)

尝试使用\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-此代码-\ue007,则将其定义为返回键。然后调用send_keys:return就会发送此代码。

HTH。