我正在尝试在Excel中计算屏幕比率.我有一个带有x和y的列,我对计算比率列的期望是:
x | y | ratio 1920 | 1080 | 16/9
但是通过使用公式= x/y并将比率列格式化为分数,我得到:
x | y | ratio 1920 | 1080 | 17/9
我认为这与舍入误差有关,但有没有办法解决这个问题,以便显示准确的屏幕分辨率?
我正在使用Selenium Webdriver,Ruby 32位1.9.3,Chromedriver v2.9.248315,Chrome 38.0.2125.111 m以及Jenkins 1.588的本地实例
宝石:黄瓜(1.3.17),selenium-webdriver(2.43.0),watir-webdriver(0.6.11)(如果你认为有必要可以提供所有其他的清单)
Windows 7 Professional 64位版.
运行Jenkins作业时,如果使用chromedriver启动Chrome,然后尝试与其进行交互,则会出现超时错误.通过命令提示符窗口在我的桌面上执行相同操作时,它可以正常工作.运行相同的Jenkins工作,启动Firefox而不是Chrome,它完美运行.
简单的例子(C:\ test.rb):
require 'watir-webdriver'
require 'selenium-webdriver'
client = Selenium::WebDriver::Remote::Http::Default.new
$browser = Watir::Browser.new :chrome, :http_client => client
$browser.driver.manage.window.maximize
$browser.close
Run Code Online (Sandbox Code Playgroud)
Jenkins作业配置为运行Windows批处理命令:
cd \
ruby test.rb
Run Code Online (Sandbox Code Playgroud)
我运行作业时的输出:
Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\jobs\test chromedriver\workspace
[workspace] $ cmd /c call C:\Windows\TEMP\hudson3963234995624341455.bat
C:\Program Files (x86)\Jenkins\jobs\test chromedriver\workspace>cd \
C:\>ruby test.rb
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill': Timeout::Error (Timeout::Error)
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2563:in `read_status_line'
from …Run Code Online (Sandbox Code Playgroud) 我正在使用C#4.6.2,但如果可能的话可以升级到4.7.2.
在我们的代码中的许多地方,我们有一个带有wait语句的循环,用于在调用函数时检查特定值,如果在最大重试次数之前它不是我们想要的,则等待并重试.
我想抽象出来,但我能想到的唯一实现要求你传递一个带有可变数量的变量类型参数的方法,经过5年前大量搜索Google似乎不可能.从那以后,C#已经有了很多改进
我正在寻找的东西是:
public bool GenericLoopWait(int maxWaitSeconds, int waitMsPerIteration,??? DoSomething,object expectedResult,...)
int maxRetries = maxWaitSeconds*1000/waitMsPerIteration;
SomeType result=null;
for(int i=0; i<maxRetries; i++){
result = DoSomething(...);
if(result==expectedResult) break;
Thread.Sleep(waitMsPerIteration);
}
return result==expectedResult
}
Run Code Online (Sandbox Code Playgroud)
然后这两个都会起作用:
GenericLoopWait(5,500,Browser.Webdriver.FindElements(selector).Any(),true);
GenericLoopWait(5,500,Api.GetSpecificObject(api,objectName),"expectedOutcome");
Run Code Online (Sandbox Code Playgroud)