【问题标题】:How do I send multiple keystroke in ruby?如何在 ruby​​ 中发送多个击键?
【发布时间】:2020-03-01 05:26:20
【问题描述】:

我正在尝试在 ruby​​ 自动化中发送击键,我不知道如何将其放入我的代码中,我想发送 (Alt+Space + X) 以最大化我的窗口。

有人可以帮我解决这个问题吗?

When("que eu realize login no SIAF com usuário e senha") do |table|
    wsh.SendKeys("%{VK 32}{VK 88}") 
    @usuario = table.rows_hash['usuario']
    @senha = table.rows_hash['senha']


    login.load
    login.log(@usuario,@senha)
  end

我希望通过命令 Alt+Space+X 最大化窗口,但没有任何反应。

我的“env.rb”是这样使用的:

require 'capybara'
require 'capybara/dsl'
require 'capybara/rspec/matchers'
require 'selenium-webdriver'
require 'site_prism'
require 'rspec'
require_relative 'page_helper.rb'


World(Capybara::DSL)
World(Capybara::RSpecMatchers)
World(Pages)

Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    mange.window.maximize
    desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(
        'chromeOptions' => {'args' => ['--disable-infobars', 
                                        'window-size=1600,1024'] }

    )


)


end

我可以把“Drive.mangage.window.maximize”放在哪里?

【问题讨论】:

  • 欢迎来到 SO。请花时间阅读How to Askminimal reproducible example。它将帮助您提出可靠的问题,这些问题有望得到有用的答案。查看send_keys 的文档。您应该能够执行element.send_keys :alt, :space, "X" 之类的操作。或者只使用Window::maximize。祝你好运!
  • 有一个标准代码可以最大化窗口为什么你必须通过按键去
  • 嗨马奎兹!您的问题有点令人困惑,因为您将 Windows Scripting Host 问题与 selenium-webdriver 混淆了。你想要哪一个?对于 WSH 部分,请注意您实际上是在使用 ALT+SPACE,然后按 x 最大化。所以只需调用 send_keys 两次。
  • @Marquiiiz 还有一个关于你的代码示例的提示:最好把所有东西都翻译成英文,这样每个人都能理解。
  • 我想要的是最大化打开我的窗口,仅此而已,无论如何,我已经通过了我的 env.rb,因为我找不到在我的代码上使用他的答案的方法

标签: ruby selenium-webdriver automation selenium-chromedriver capybara


【解决方案1】:

您发送的密钥会发送到浏览器,而不是操作系统,因此不能保证触发系统操作。要最大化窗口,最好的方法是

page.current_window.maximize

【讨论】:

  • 嗨,你能解释一下两者有何不同吗?例如,driver.find_element.click 触发操作系统但driver.action.click(driver.find_element).perform 执行浏览器级别的点击?有什么不同?两者都在调用点击模块,嗯?
  • @Rajagopalan 这两个都会触发浏览器级别的事件。没有办法通过 webdriver 来保证操作系统级别的响应
  • 不,你说触发操作系统级别有区别,这是什么?这与从浏览器级别触发操作有何不同?
  • @Rajagopalan 我不明白你在问什么?发送的击键通过 webdriver 协议直接发送到浏览器。它们不会像直接在键盘上的击键(活动窗口、操作系统击键快捷方式等)那样由操作系统路由和处理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
相关资源
最近更新 更多