В Ruby с Selenium сложность программной отправки клавиши ВВОД - PullRequest
0 голосов
/ 29 декабря 2018

В Ruby с Selenium у меня возникают трудности с программной отправкой клавиши ВВОД.

Мне удается программно загрузить google.com в Firefox и отправить ключи в окно поиска.

Я могу нажать 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 голосов
/ 29 декабря 2018

Вы можете попробовать следующий код для нажатия клавиши «ВВОД»:

driver.find_element(:name, "q").send_keys:return
0 голосов
/ 29 декабря 2018

Попробуйте с помощью \ue007:

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

Редактировать: поскольку это, вероятно, не совсем очевидно, код, который я предлагаю, отличается от того, что вы пробовали.У него есть дополнительный символ «е», что делает его совершенно другим кодом Юникода.

Кроме того, если вы проверите источник селена - https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/common/keys.rb - этот код - \ue007, это то, что определенов качестве ключа возврата.И вызов send_keys:return отправляет именно этот код.

HTH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...