我对编程很新,而且我不确定我应该寻找哪些关键字。
我现在正在做这样的事情:
def click(text, type)
b.span(:text=> text).click if type == 'span'
b.button(:name=> text).click if type == 'button'
b.image(:src=>text).click if type == 'image'
b.button(:title=>text).click if type == 'title'
end
我不喜欢它,因为它不能很好地扩展。我想做点什么:
def click(text,type)
b.type(:text=> text).click
end
如果我尝试输入没有引号的类型,它会抛出一个未定义的方法错误,但它肯定不是一个字符串。如何告诉脚本使用watir-webdriver span / button / image / etc?
答案 0 :(得分:1)
我不确定你是如何在脚本中调用click
方法的,但这是一个似乎有效的人为例子:
require 'watir-webdriver'
def click_method(element, text)
@b.element(:text => "#{text}").click
end
@b = Watir::Browser.new
@b.goto "http://www.iana.org/domains/reserved"
click_method("link", "Domains")
修改强>
require 'watir-webdriver'
def method_not_named_click(el, locator, locator_val)
if locator_val.is_a? String
@b.send(el, locator => "#{locator_val}").click
elsif locator_val.is_a? Integer
@b.send(el, locator => locator_val).click
end
end
@b = Watir::Browser.new
@b.goto "http://www.iana.org/domains/reserved"
method_not_named_click(:a, :text, "Domains")
method_not_named_click(:a, :index, 3)
答案 1 :(得分:1)
很难弄清楚你想要用这种方法做什么,或者为什么它甚至是必要的 - 或者为什么你的类型参数不是字符串以外的东西 - 但是这里是一种帮助您清理代码的方法,类似于建议的代码。
请注意,当你说“它绝对不是一个字符串”时,你不清楚你所暗示的是什么。如果它不是字符串,它是什么?它是从哪里来的,你将它坚持到这个方法的参数而不知道它是什么类型的对象?
所以......我假设你的类型没有拥有成为一个String对象,所以我做了它所以需要符号...
def click(text, type)
types={span: :text, button: :name, image: :src, title: :title }
@b.send(type, {types[type]=>text}).click
end