标签: page-object-gem

如何避免Page Object中的复合类名错误?

当我尝试使用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)

selenium pageobjects page-object-gem selenium-webdriver

11
推荐指数
1
解决办法
4万
查看次数

Capybara与页面对象gem集成

是否可以使用页面对象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

7
推荐指数
2
解决办法
2593
查看次数

如何获取page_object元素的attribute_value?

想象一下,我有一个像这样的图像:

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元素获取值?当然答案很简单,但我没有找到它.你能告诉我路吗?

先感谢您!

ruby cucumber watir-webdriver pageobjects page-object-gem

5
推荐指数
1
解决办法
3808
查看次数

Watir,Page-objects:如何获取具有相同标识符的所有元素

我想在我的页面上检查以下代码:

...    
<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"相关的页面上的所有链接

谢谢,安娜

webdriver watir-webdriver page-object-gem

5
推荐指数
1
解决办法
4741
查看次数

可以在PageObject :: Accessors中有一个divs方法,我的解决方法好吗?

在页面对象中,我希望以特定方式访问多个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)

任何人都可以建议在页面对象中更好的方法吗?

提前致谢...

page-object-gem

4
推荐指数
1
解决办法
837
查看次数

在IE上Watir Webdriver文本输入慢

我正在使用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选项,但这似乎没有帮助.

internet-explorer cucumber watir-webdriver page-object-gem

4
推荐指数
1
解决办法
1851
查看次数

动态页面网址

我有一个带有动态 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,那就太好了,但我还没有想出如何去做。

ruby watir-webdriver pageobjects page-object-gem

3
推荐指数
1
解决办法
1979
查看次数

在Cucumber上为多个功能使用相同的浏览器实例时出错

我在为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

3
推荐指数
1
解决办法
2022
查看次数

如何获取page_object元素的html源代码?

想象一下,我有一个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信息,我没有找到它.你能告诉我路吗?

先感谢您!

ruby cucumber watir-webdriver pageobjects page-object-gem

3
推荐指数
1
解决办法
776
查看次数

从选择List by value元素中选择一个值

最近我在使用页面对象时遇到了一个问题,我无法找到答案.

使用选择列表选择选项时.我需要通过部分文本或属性来选择.这是一个例子:

 <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)

但是这已被弃用了.

我还没有在网络上的任何地方看到按值选择选项或索引.有人存在吗?

此外,如果有部分文本搜索,将解决我的问题.

提前致谢.

ruby watir page-object-gem

3
推荐指数
1
解决办法
2328
查看次数