似乎ClearCache方法在WatiN中对IE不起作用.至少,它对你已经缓存的东西不起作用因为你打开了实例.
有什么建议?
我尝试使用ReOpen,但它出错了.它似乎也做同样的事情
Browser.Close();
Browser = new IE();
Run Code Online (Sandbox Code Playgroud)
这很慢.我的测试只花了两倍的时间来运行(这是清除缓存的唯一当前解决方法).
提前致谢.
这个页面上发生了一些奇怪的事情:
require "watir-webdriver"
b = Watir::Browser.new
b.goto "http://mideastunes.com/"
b.div(class: "feat-container").element(css: "a span").present?
=> true
b.div(class: "feat-container").element(css: "a span").click
Selenium::WebDriver::Error::MoveTargetOutOfBoundsError: Element cannot be scrolled into view:[object HTMLSpanElement]
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:350:in `clickElement'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/element.rb:34:in `click'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/watir-webdriver-0.5.3/lib/watir-webdriver/elements/element.rb:107:in `click'
from (irb):48
from /Users/zeljko/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我想点击这个范围:
<span class="feature-prev-icon icon"></span>
Run Code Online (Sandbox Code Playgroud)
我可以点击它:
b.span(class: "feature-prev-icon icon").click
Run Code Online (Sandbox Code Playgroud)
但是我想点击它:
b.div(class: "feat-container").element(css: "a span").click
Run Code Online (Sandbox Code Playgroud)
环境:Mac OS X …
我有一个带有动态 URL 的页面。我们称之为查看帖子页面。帖子 1 的网址是site.com/post/1,帖子 2 的网址是site.com/post/2。
这就是我现在所做的检查我是否在正确的页面上。
这一页:
class ViewPostPage
include PageObject
def self.url
"site.com/post/"
end
end
Run Code Online (Sandbox Code Playgroud)
黄瓜步骤:
on(ViewPostPage) do |page|
@browser.url.should == "#{page.class.url}#{@id}"
end
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?你甚至费心检查整个 URL,还是只检查site.com/post/一部分?
我正在使用最新的页面对象gem (0.6.6)。
更大的问题是直接转到具有动态 URL 的页面。
这一页:
class ViewPostPage
include PageObject
def self.url
"site.com/post/"
end
page_url url
end
Run Code Online (Sandbox Code Playgroud)
黄瓜步骤:
visit ViewPostPage
Run Code Online (Sandbox Code Playgroud)
我现在要做的是将 Cucumber 步骤更改为:
@browser.goto "#{ViewPostPage.url}#{@id}"
Run Code Online (Sandbox Code Playgroud)
如果有一种方法可以让页面知道它的 ID,那就太好了,但我还没有想出如何去做。
require 'watir'
ie = Watir::Browser.new
ie.goto "http://www.wallpapers.com/windows/Wallpapers/Animals/Dogs"
ie.select(:id, "ctl00_CPH1_ctl00_ddlSortExpression").flash
ie.select(:id, "ctl00_CPH1_ctl00_ddlSortExpression").set("Newest")
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.0.0/lib/watir-classic/element.rb:433:in `method_missing': undefined method `set' for #<Watir::SelectList:0x31be0b8> (NoMethodError)
from sample.rb:9:in `<main>'
Run Code Online (Sandbox Code Playgroud)
也试过相同的结果:
ie.select(:id, "ctl00_CPH1_ctl00_ddlSortExpression").to_subtype.set("Newest")
Run Code Online (Sandbox Code Playgroud) 我很确定watir-webdriver有css选择器支持,但看起来它不再存在了:
$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
$ gem -v
1.8.15
$ gem list selenium-webdriver
*** LOCAL GEMS ***
selenium-webdriver (2.17.0)
$ gem list watir-webdriver
*** LOCAL GEMS ***
watir-webdriver (0.4.1)
$ irb
> require "watir-webdriver"
=> true
> browser = Watir::Browser.new :firefox
=> #<Watir::Browser:0x787eb29124fb7658 url="about:blank" title="">
> browser.goto "google.com"
=> "http://www.google.com.mx/"
> browser.a(:css => "a").flash
Watir::Exception::MissingWayOfFindingObjectException: invalid attribute: :css
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:228:in `assert_valid_as_attribute'
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:209:in `normalize_selector'
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:191:in `block in normalized_selector'
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:188:in `each'
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.4.1/lib/watir-webdriver/locators/element_locator.rb:188:in `normalized_selector' …Run Code Online (Sandbox Code Playgroud) 我使用的是firefox,我修改了它的用户代理,使其行为像iphone web浏览器.现在,当我使用watir打开google.com时,现在我想点击searh按钮,这是移动视图中的图像.怎么做.
我正在测试使用单点登录(SSO)的消息传递应用程序.我需要模拟使用SSO连接到WAM的用户,然后我需要从服务器获取cookie并将其存储以用于进一步的通信事件.是否有人熟悉如何使用Ruby完成此操作?
我试图找出通过gem install或安装宝石的次数gem update.
例如,Watir 1.6.2:
我被告知4,027不包括通过gem install或安装gem update.这些信息是否正确?如果是,我在哪里可以找到gem install和gem update?的数字?我看到了我想到的rubyforge的所有地方,但没有运气.
我需要生成一个随机日期.我的计算时间不需要时间.我想要使用的是:
def date_rand from = 0.0, to = Time.now
Time.at(from + rand * (to.to_f - from.to_f))
end
Run Code Online (Sandbox Code Playgroud)
这让我很接近,但有一堆我不需要的其他信息.(时间,区域等)如果有办法在没有所有其他数据的情况下获取日期,我将非常感谢您对它的了解.