PageObject with Ruby - set text in a text field only works in the main file

安稳与你 提交于 2019-12-02 03:25:38

In ruby all equals methods (methods that end with the = sign) need to have a receiver. Let me show you some code that will demonstrate why. Here is the code that sets a local variable to a value:

domain = "blah"

and here is the code that calls the domain= method:

domain = "blah"

In order for ruby to know that you are calling a method instead of setting a local variable you need to add a receiver. Simply change your method above to this and it will work:

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

I'm pretty new to this world of Selenium and page objects but maybe one of my very recent discoveries might help you.

I found that that assignment methods for the select_list fields only worked for me once I started using "self" in front. This is what I have used to access it within my page object code. e.g., self.my_select_list="my select list value"

Another note - The send_keys workaround you mention is clever and might do the trick for a number of uses, but in my case the select list values are variable and may have several options starting with the same letter.

I hope something in here is useful to you.

UPDATE (Jan 3/12)

On diving further into the actual Ruby code for the page object I discovered that the select_list set is also using send_keys, so in actuality I still have the same limitation here as the one I noted using the send_keys workaround directly. sigh So much to learn, so little time!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!