我正在自动化一个网站,该网站有一个页面,其中包含由单选按钮选择的选项列表。选择其中一个收音机时,会显示一个文本字段和一个选择列表。
我创建了一个文件 (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”检查了它。即使我将参数更改为像“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
你们对为什么页面对象自动生成的设置对象值的方法在这个范围/上下文中不起作用有任何解释吗?
顺便说一句,一位朋友用 Java 尝试过同样的事情,但也失败了。