Windows 为什么发送密钥可以';在chrome和ie中单击鼠标右键后无法工作,但firefox可以吗?

Windows 为什么发送密钥可以';在chrome和ie中单击鼠标右键后无法工作,但firefox可以吗?,windows,webdriver,watir,watir-webdriver,Windows,Webdriver,Watir,Watir Webdriver,我想用右键单击和alt+y复制页面中的图像,下面的代码在firefox中运行良好,但是chrome和ie。因此我无法从剪贴板中获取图像 require 'watir-webdriver' b = Watir::Browser.new :chrome b.goto('www.baidu.com') b.img(:src=>"http://www.baidu.com/img/baidu_sylogo1.gif").right_click b.send_keys ("{alt}y") 并且遵循

我想用右键单击和alt+y复制页面中的图像,下面的代码在firefox中运行良好,但是chrome和ie。因此我无法从剪贴板中获取图像

require 'watir-webdriver'
b = Watir::Browser.new :chrome
b.goto('www.baidu.com')
b.img(:src=>"http://www.baidu.com/img/baidu_sylogo1.gif").right_click
b.send_keys ("{alt}y")
并且遵循代码可以很好地工作

require 'watir-webdriver'
b = Watir::Browser.new :chrome
b.goto('www.baidu.com')
b.send_keys :tab

这可以很好地工作

这将有助于了解为什么要保存图像。屏幕截图有用吗?如果愿意,请尝试以下操作:

b.driver.save_screenshot "#{Time.now.to_i}.png"

这将有助于了解为什么要保存图像。屏幕截图有用吗?如果愿意,请尝试以下操作:

b.driver.save_screenshot "#{Time.now.to_i}.png"

当您发送{code>b.send_key({alt}y”)时,您只需键入字母{、a、l等

请尝试以下方法:

b.send_keys([:alt, 'y'])
Watir和Watir Webdriver对发送键使用不同的输入-请参阅


注意:我没有用这个测试你的完整脚本。老实说,我不知道如何使用alt+y将图像手动复制到剪贴板。

当你执行
b.send_key(“{alt}y”)
时,你只需键入字母{,a,l等

请尝试以下方法:

b.send_keys([:alt, 'y'])
Watir和Watir Webdriver对发送键使用不同的输入-请参阅


注意:我没有用这个测试你的完整脚本。老实说,我不知道如何使用alt+y将图像手动复制到剪贴板。

不要浪费任何时间尝试自动验证,例如验证码(完全自动的公共图灵测试,以区分计算机和人类)或者其他旨在阻碍自动化的认证系统。是的,这是可以做到的,但它实际上是在进行军备竞赛或向风车倾斜。更重要的是,它不会给你的雇主带来任何价值

自动处理验证码或验证码的正确方法是配置测试环境,使代码是可预测的。许多验证码工具或验证工具都能够在“测试”模式下运行,并具有设置的响应。您永远不会以这种方式配置生产环境,但您可以轻松地(而且应该这样做)以这种方式配置测试环境

与设置和控制测试环境的人员交谈。他们只需要一些逻辑,知道这是一个测试环境,然后使用适当的api调用验证码或授权工具(如google authorizer或每5分钟吐一次数字的小部件)将其置于测试模式,以便使用可预测的验证响应

下面是我所说的一个例子:

如果您使用的是不支持此功能的软件,那么您可以将系统配置为完全跳过验证码,或者将其配置为指向您创建的某个测试存根(而不是真正的验证码系统)。这将是您或您的开发人员创建的一小段代码,使用与实际验证码相同的api,但始终需要相同的答案。在这种情况下,所有内容的行为都与与与实际验证码服务对话时的行为完全相同,但与之对话的小存根代码始终发送具有相同“答案”的相同图像,例如“测试”


这种情况在测试环境中是正常的,在测试环境中,各种第三方内容要么被禁用,要么进入测试模式,要么连接到测试沙箱(例如验证码、广告、网站分析、跟踪像素、信用卡授权服务等)

不要浪费任何时间尝试自动验证,例如验证码(区分计算机和人类的完全自动公共图灵测试)或者其他旨在阻碍自动化的认证系统。是的,这是可以做到的,但它实际上是在进行军备竞赛或向风车倾斜。更重要的是,它不会给你的雇主带来任何价值

自动处理验证码或验证码的正确方法是配置测试环境,使代码是可预测的。许多验证码工具或验证工具都能够在“测试”模式下运行,并具有设置的响应。您永远不会以这种方式配置生产环境,但您可以轻松地(而且应该这样做)以这种方式配置测试环境

与设置和控制测试环境的人员交谈。他们只需要一些逻辑,知道这是一个测试环境,然后使用适当的api调用验证码或授权工具(如google authorizer或每5分钟吐一次数字的小部件)将其置于测试模式,以便使用可预测的验证响应

下面是我所说的一个例子:

如果您使用的是不支持此功能的软件,那么您可以将系统配置为完全跳过验证码,或者将其配置为指向您创建的某个测试存根(而不是真正的验证码系统)。这将是您或您的开发人员创建的一小段代码,使用与实际验证码相同的api,但始终需要相同的答案。在这种情况下,所有内容的行为都与与与实际验证码服务对话时的行为完全相同,但与之对话的小存根代码始终发送具有相同“答案”的相同图像,例如“测试”


这种情况在测试环境中是正常的,在测试环境中,各种第三方内容要么被禁用,要么进入测试模式,要么连接到测试沙箱(例如验证码、广告、网站分析、跟踪像素、信用卡授权服务等)

根据前面的一条评论,听起来您最终只需要一种保存图像的方法。我认为将图像复制到剪贴板实际上并不重要

因此,您可以在Watir Webdriver中进行所有导航,然后切换到其他Ruby gems(例如Open URI或Net Http)下载图像

以下是使用开放URI的示例:

require 'watir-webdriver'
require "open-uri"

save_file = 'C:\Documents and Settings\Setup\Desktop\image.png'

b = Watir::Browser.new :chrome
b.goto('www.baidu.com')
image_location = b.img.src

File.open(save_file, 'wb') do |fo|
  fo.write open(image_location).read
end

根据前面的一条评论,听起来您最终只需要一种保存图像的方法。我认为将其复制到剪贴板实际上并不重要

因此,您可以在Watir Webdriver中进行所有导航,然后切换到其他Ruby gems(例如Open URI或Net Http)下载图像

以下