Tag: page object gem

更改元素级别的默认超时在page_object gem中等待

有没有办法在页面对象gem中对元素级别等待的默认超时进行全局更改? 我们使用默认的5秒,但需要根据环境一段时间更改一次。 我们的主要测试环境在几台服务器上运行,因此响应时间非常快。 但是,我们只有一个或两个环境在一台服务器上运行,响应时间有点慢。 我想根据环境改变这个值。 我意识到这不是理想的,但我被要求调查。 谢谢。

获取布尔属性的实际值

我有跨度: Edit Member 当我尝试获取disabled属性的值时: page.in_iframe(:id => ‘MembersAreaFrame’) do |frame| expect(page.span_element(:xpath => “//span[text()=’Edit Member’]”, :frame => frame).attribute(‘disabled’)).to eq(“disabled”) end 我明白了: expected: “disabled” got: “true” 如何获取指定属性的值而不是布尔值?

使用页面对象访问3层深度的嵌套元素

使用Page Object模型和gem我想访问一个嵌套3层深的元素。 我已经成功访问​​了2个元素深的嵌套元素,但对于3个相同的方法不起作用。 我的Page Object中定义的3个元素: div(:serv_info, :class => “service-info”) div(:validate_method, :class => “validate-method”) div(:scar_input_group, :class => “input-group”) 所以我试图链接这3个元素来访问div class input-container input-left-half round如下所示: div(:scar_first_name_error){validate_method_element.serv_info_element.scar_input_group_element.div_element(:class => “input-container input-left-half round”)} 但是我得到了一个错误,即serv_info_element是一个未定义的方法,这是有道理的,但有可能链接我上面提到的3个预定义元素来访问input-container input-left-half round ? 我读了这个: https : //github.com/cheezy/page-object/wiki/Nested-Elements但是如果我能帮忙的话,我不想重复任何代码。

使用带有Page-Object的IE 11 x64时出现“Watir :: Exception :: NoMatchingWindowFoundException:浏览器窗口已关闭”错误

我正在使用Page-Object + Rspec在Ruby Mine 2.7.1中运行测试。 环境:Windows 7 x64,Ruby 1.9.3 p551,IE 11。 Gems: watir , rspec , bundler , page-object 当我在Chrome或Firefox中运行测试时,一切正常。 但是当我尝试在IE中运行它们时,带有正确页面的IE窗口会被打开,之后我会在主题中指定错误: “Watir::Exception::NoMatchingWindowFoundException: browser window was closed” 关键是浏览器实际上是在那一刻打开并显示正确的页面。 (参见截屏video,了解会发生什么: http : //screencast.com/t/06prRy3OMLM ) 测试结束时出现错误,并且config.after do部分未执行,因为浏览器窗口仍然打开。 执行以下代码时会发生该错误: before(:each) do visit end 好像IEDriverServer在页面打开后立即失去与IE的连接。 最令人困惑的是,在极少数情况下,一切都运行良好,在更罕见的情况下,一切都在使用最终的超时错误显着减速。 sleep 延迟没有帮助。 我尝试了不同版本的selenium-webdriver gem(它是watir gem需要的),不同版本的IEDriverServer用于x86和x64平台 – 结果是一样的。 lib/watir-classic/exceptions.rbexception描述如下: # This exception is raised if […]

如何根据行中的文本单击表中的链接

使用page-object和watir-webdriver如何根据行文本单击表中的链接,如下所示: 该表包含3行,其中第一列中包含名称,右侧列中包含相应的“详细信息”链接: 仪表板….详情 示例……细节 等等。 ALL THE DETAILS: ….soon DASHBOARD: —> Based on this text ….some element Details —> I should able click this link

带Ruby的PageObject – 在文本字段中设置文本只能在主文件中使用

我正在自动化一个网站,该网站的页面包含一个单选按钮选择的选项列表。 选择其中一个无线电时,会显示文本字段和选择列表。 我创建了一个文件(test_contracting.rb),它是我执行测试的文件(ruby test_contracting.rb)和其他一些代表我的页面的类。 在我的类ContractPage上,我有以下元素声明: checkbox(:option_sub_domain, :id => “option_sub_domain”) text_field(:domain, :id => “domain_text”) select_list(:tld, :id => “domain_tld”) 我在ContractPage中创建了一个方法来设置域的配置,如下所示: def configure_domain(config={}) check_option_sub_domain domain = config[:domain] tld = config[:tld] end 当我从test_contracting.rb调用configure_domain方法时,它会选择单选按钮,但它不会使用值填充该字段。 参数正确地进入方法。 我用“puts”检查了它。 即使我将params更改为像“bla”这样的一般字符串,它也不起作用。 令人讨厌的一点是,如果在test_contracting.rb上我调用完全相同的组件,它就可以工作。 my_page_instance = ContractPage.new(browser) my_page_instance.domain = “bla” my_page_instance.tld = “.com” 我发现工作的是在configure_domain方法中,实现以下内容: domain_element.value = config[:domain] tld_element.send_keys config[:locaweb_domain] 然后它奏效了。 我可以在这里找到我作为参考使用的PageObjects模块的文档: http : //rubydoc.info/github/cheezy/page-object/master/PageObject/Accessors#select_list-instance_method 你们有没有解释为什么pageobject自动生成的方法设置对象的值在这个范围/上下文中不起作用? 顺便说一句,一位朋友用Java尝试了同样的事情,但也失败了。