当我尝试使用class = "country name"在页面对象中有空格的类名时,我得到:
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
Run Code Online (Sandbox Code Playgroud)
如何使用具有空格的类名.
例如:
class = "country name"
Run Code Online (Sandbox Code Playgroud) 是否可以使用页面对象gem和capybara来自动化Ruby on Rails测试?当我在启动测试后尝试访问页面对象时,收到以下错误:
Unable to pick a platform for the provided browser (RuntimeError)
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为我认为我必须将capybara的浏览器实例传递给页面对象,不确定是否有其他人曾经尝试过这个.
ruby-on-rails capybara pageobjects page-object-gem selenium-webdriver
想象一下,我有一个像这样的图像:
the_image = @browser.image(:id, 'image01')
Run Code Online (Sandbox Code Playgroud)
获得其类的价值的方法可以是:
image_status = the_image.attribute_value('class')
Run Code Online (Sandbox Code Playgroud)
好.我正在使用page_object gem并假设我将图像作为元素,如:
image(:the_image, :id => 'image01')
Run Code Online (Sandbox Code Playgroud)
要获取attribute_value,我可以使用:
image_status = the_image_element.attribute_value('class')
Run Code Online (Sandbox Code Playgroud)
......但是我得到了一份弃权警告:
*** DEPRECATION WARNING
*** You are calling a method named attribute_value at page.rb:68:in `get_status'.
*** This method does not exist in page-object so it is being passed to the driver.
*** This feature will be removed in the near future.
Run Code Online (Sandbox Code Playgroud)
如何class使用page_object元素获取值?当然答案很简单,但我没有找到它.你能告诉我路吗?
先感谢您!
我想在我的页面上检查以下代码:
...
<p class="tags-link">
<a href="/search?q=test1" rel="nofollow">test1</a>
<a href="/search?q=test2" rel="nofollow">test2</a>
<a href="/search?q=test3" rel="nofollow">test3</a>
</p>
....
<p class="tags-link">
<a href="/search?q=test4" rel="nofollow">test4</a>
<a href="/search?q=test5" rel="nofollow">test5</a>
<a href="/search?q=test6" rel="nofollow">test6</a>
</p>
Run Code Online (Sandbox Code Playgroud)
....
我使用Watir-webdriver和page-object.我需要通过"tags-link"类获取与块相关的所有链接.
我有以下代码:
element(:tags, :p, :css => "tags-link a")
Run Code Online (Sandbox Code Playgroud)
tags_element仅返回第一个链接.
以下代码将仅提供与第一个块相关的3个链接:
element(:tags, :p, :css => "tags-link")
tags_element.element.links.each do |elm|
puts elm
end
Run Code Online (Sandbox Code Playgroud)
但我需要获得所有标签块
现在我有以下代码可行,但我想成为"页面对象"导向:
@browser.elements(:css =>".tags-link a").each do |tag|
puts tag
end
Run Code Online (Sandbox Code Playgroud)
你可以帮助我...使用页面对象获取与"tags-link"相关的页面上的所有链接
谢谢,安娜
在页面对象中,我希望以特定方式访问多个div.
这是访问匹配的第一个div:
div(:search_result, id: /rptSearchResults/)
Run Code Online (Sandbox Code Playgroud)
如果在PageObject :: Accessors中存在div,则可以访问多个匹配的div:
divs(:search_result, id: /rptSearchResults/)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试过:
visit_page SearchResultsPage do |page|
#This outputs the first div that matches
page.search_result_element.div_elements(id: /rptSearchResults/).each { |i| puts i.text }
#This accesses the page and outputs text in all divs that match
page.div_elements(id: /rptSearchResults/).each { |i| puts i.text}
end
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议在页面对象中更好的方法吗?
提前致谢...
我正在使用Cucumber和Watir-Webdriver来创建一些自动化测试.我也在使用PageObject gem.下面是一些示例代码
require 'page-object'
class LoginPage
include PageObject
text_field(:username, :name => 'username')
text_field(:password, :name => 'password')
link(:login, :text => 'SIGN IN')
end
browser = Watir::Browser.new
browser.goto "MyWebAppLoginScreen"
login_page = LoginPage.new(browser)
login_page.username="MyUserName"
login_page.password="MyPass"
login_page.login
Run Code Online (Sandbox Code Playgroud)
我看到的问题是,将文本输入IE(版本11)中的用户名/密码字段需要很长时间.我还测试了Firefox和Chrome,并立即输入文本.然而,在IE中,它逐个字符地输入文本,每个字符大约需要10到15秒才能放入.这大大减慢了我在IE中测试的运行时间.有人遇到过这种情况么?关于如何修复它的任何想法?我尝试使用browser.speed =:zippy选项,但这似乎没有帮助.
我有一个带有动态 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,那就太好了,但我还没有想出如何去做。
我在为Cucumber驱动程序创建浏览器实例时遇到问题.如果我在"之前做"的env.rb中创建对象:
Before do
@browser = Watir::Browser.new 'firefox'
end
Run Code Online (Sandbox Code Playgroud)
...工作正常,为每个功能打开一个新的浏览器,并在"After do"上关闭它.
这会降低执行速度,因为新浏览器会启动并关闭每个功能.但是如果我在"之前做"中创建@browser以便为所有功能使用相同的浏览器会话,则会出现以下错误:
**Unable to pick a platform for the provided browser (RuntimeError)**
Run Code Online (Sandbox Code Playgroud)
......根本没有进行任何测试.我正在使用页面对象gem,ruby-on-rails ......
你能告诉我,我做错了什么?非常感谢!
ruby-on-rails cucumber watir-webdriver pageobjects page-object-gem
想象一下,我有一个div(用Watir语言):
@browser.div(:id, 'home_slideshow')
Run Code Online (Sandbox Code Playgroud)
我需要里面的html代码来做一些"魔法正则表达式":).获取div html代码的方法可能是:
the_div_html = @browser.div(:id, 'home_slideshow').html
Run Code Online (Sandbox Code Playgroud)
好.我正在使用page_object gem并假设我将div作为元素,例如:
div(:slide_show, :id => 'home_slideshow')
Run Code Online (Sandbox Code Playgroud)
要获得html里面我可以使用:
the_div_html = slide_show_element.html
Run Code Online (Sandbox Code Playgroud)
......但是我得到了弃权警告:
*** DEPRECATION WARNING
*** You are calling a method named attribute_value at home_page.rb:80:in `get_slide_code'.
*** This method does not exist in page-object so it is being passed to the driver.
*** This feature will be removed in the near future.
Run Code Online (Sandbox Code Playgroud)
如何使用page_object元素获取html代码?正如我之前提出的一些类似的问题,确定答案是如此简单,但我看看Cheezy书,整个stackoverflow和页面对象rubydoc信息,我没有找到它.你能告诉我路吗?
先感谢您!
最近我在使用页面对象时遇到了一个问题,我无法找到答案.
使用选择列表选择选项时.我需要通过部分文本或属性来选择.这是一个例子:
<select id="custcol95" name="custcol95">
<option selected="" value="">- Select -</option>
<option value="5">Monthly Basic Plan - $27.99</option>
<option value="1">Monthly Business Plan - $54.99</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我试过了:
select_list(:planPurchase, :id => 'custcol95')
Run Code Online (Sandbox Code Playgroud)
我可以做这个:
selectCloudPlan_element.option(:value, CLOUD_PLANS['PersonalMonthly']).select
Run Code Online (Sandbox Code Playgroud)
但是这已被弃用了.
我还没有在网络上的任何地方看到按值选择选项或索引.有人存在吗?
此外,如果有部分文本搜索,将解决我的问题.
提前致谢.
page-object-gem ×10
pageobjects ×6
cucumber ×4
ruby ×4
capybara ×1
selenium ×1
watir ×1
webdriver ×1