Tag: pageobjects

使用页面对象访问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但是如果我能帮忙的话,我不想重复任何代码。

带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尝试了同样的事情,但也失败了。