Я предполагаю, что вы катите свою собственную инфраструктуру объекта страницы (вместо того, чтобы спрашивать, как это сделать в конкретной среде).
Я бы создал класс для представления учетной записи.Это то же самое, что и у вас, за исключением того, что предполагается, что вы передадите элемент (а не браузер).Этот элемент должен представлять все содержимое учетной записи - то есть он ожидал бы <div class = "account">
.Его метод будет искать содержимое, относящееся к этому элементу.
class Account
def initialize(element)
@element = element # expected to be div.account
end
def user
@element.div(:class => "name")
end
def email
@element.div(:class => "email")
end
def phone
@element.div(:class => "phone")
end
end
В классе страницы вы можете создать метод #accounts, чтобы (1) получить все разделы учетной записи и (2) обернуть их вкласс вашей учетной записи:
class Page
def initialize(browser)
@browser = browser
end
def accounts
@browser.divs(class: 'account').map { |d| Account.new(d) }
end
end
Тогда вы будете использовать страницу:
page = Page.new(browser)
# Inspecting the collection of accounts
page.accounts.count
#=> 3
# Inspecting a specific account (note the 0-based index)
page.account[1].user.text
#=> "<second accounts name>"