gpt4 book ai didi

ruby - 使用 Ruby 的 PageObject - 在文本字段中设置文本仅适用于主文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:09 24 4
gpt4 key购买 nike

我正在自动化一个网站,该网站有一个页面,其中包含由单选按钮选择的选项列表。选择其中一个 radio 时,会显示一个文本字段和一个选择列表。

我创建了一个文件 (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

你们有没有解释为什么页面对象自动生成的设置对象值的方法在这个范围/上下文中不起作用?

顺便说一句,一位 friend 用 Java 尝试了同样的事情,但也失败了。

最佳答案

在 ruby​​ 中,所有 equals 方法(以 = 号结尾的方法)都需要有一个接收者。让我向您展示一些代码来说明原因。下面是将局部变量设置为值的代码:

domain = "blah"

下面是调用 domain= 方法的代码:

domain = "blah"

为了让 ruby​​ 知道您正在调用方法而不是设置局部变量,您需要添加一个接收器。只需将上面的方法更改为此即可:

def configure_domain(config={})
check_option_sub_domain
self.domain = config[:domain]
self.tld = config[:tld]
end

关于ruby - 使用 Ruby 的 PageObject - 在文本字段中设置文本仅适用于主文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com