我正在尝试在Selenium中处理动态标签名称。
说我有:
Website 1 > Login page > Username : TextBox
Website 2 > Login page > User : TextBox
Website 3 > Login page > Login : TextBox
因此有3种不同类型的登录标签名称,显然它们的文本框定位器名称或ID也会不同。 如何使其保持通用,以便代码直接关注用于输入用户名的登录文本框,而不管文本框的不同ID或名称或xpath。
任何建议都会有很大的帮助。
答案 0 :(得分:2)
这是Page Object模式可以帮助您的地方。
这里的想法是定义一个LoginPage
类(example),它将具有" login"," password"字段,"提交"按钮和其他所需的一切。您可以让构造函数定义特定于网站的定位器,也可以将LoginPage
子类化,并使用自定义定位器具有WebSite1LoginPage
,WebSite2LoginPage
等类。
无论如何,这种方法可以帮助您抽象出登录页面并隐藏实现/位置细节,使您的测试易于阅读和支持。
另见:
答案 1 :(得分:0)
如果所有3个窗口/站点之间的登录字段的路径不共享将唯一映射到该元素的公共路径,那么您别无选择,只能定义3个元素...
根据您提供的示例,减少重复的方法是参数化用户名,用户,登录"根据您正在点击的网站...
类似的东西:
if website1
login = "username"
elsif website2
login = "user"
elsif website3
login = "login"
end
element = find("xpath#{login}xpath")