Метод доступа div(:msg,:role => "textbox")
не генерирует метод #msg=
. Он определяет только:
#msg
- Получает текст div #msg?
- Проверить, присутствует ли div #msg_element
- Получить the PageObject :: Elements :: Element
Вам потребуется либо вручную определить метод, либо создать виджет для редактируемых элементов содержимого.
Определить вручную Setter
Contenteditable элементы могут быть введены с использованием метода #set
. Вы можете использовать это для создания метода установки:
class MessagePage
include PageObject
div(:msg, role: "textbox")
def msg=(value)
msg_element.set(value)
end
end
page = MessagePage.new(browser)
page.msg = 'your text'
p page.msg
#=> "your text"
Определить виджет
Если вам приходится иметь дело с несколькими contenteditable элементами, вы должны создать виджет для избавьте от необходимости вручную создавать каждый из сеттеров.
class Contentedtiable < PageObject::Elements::Element
def self.accessor_methods(widget, name)
#
# Set text
#
widget.send('define_method', "#{name}=") do |value|
self.send("#{name}_element").set(value)
end
#
# Get text
#
widget.send('define_method', "#{name}") do
self.send("#{name}_element").text
end
end
PageObject.register_widget :contenteditable, self, :element
end
class MyPage
include PageObject
contenteditable(:msg, tag_name: 'div', role: 'textbox')
end
page = MyPage.new(browser)
page.msg = 'your text'
p page.msg
#=> "your text"