处理Selenium中的动态文本框

时间:2015-06-05 10:47:15

标签: selenium selenium-webdriver

我正在尝试在Selenium中处理动态标签名称。

说我有:

Website 1 > Login page > Username : TextBox 
Website 2 > Login page > User     : TextBox
Website 3 > Login page > Login    : TextBox

因此有3种不同类型的登录标签名称,显然它们的文本框定位器名称或ID也会不同。 如何使其保持通用,以便代码直接关注用于输入用户名的登录文本框,而不管文本框的不同ID或名称或xpath。

任何建议都会有很大的帮助。

2 个答案:

答案 0 :(得分:2)

这是Page Object模式可以帮助您的地方。

这里的想法是定义一个LoginPage类(example),它将具有" login"," password"字段,"提交"按钮和其他所需的一切。您可以让构造函数定义特定于网站的定位器,也可以将LoginPage子类化,并使用自定义定位器具有WebSite1LoginPageWebSite2LoginPage等类。

无论如何,这种方法可以帮助您抽象出登录页面并隐藏实现/位置细节,使您的测试易于阅读和支持。

另见:

答案 1 :(得分:0)

如果所有3个窗口/站点之间的登录字段的路径不共享将唯一映射到该元素的公共路径,那么您别无选择,只能定义3个元素...

根据您提供的示例,减少重复的方法是参数化用户名,用户,登录"根据您正在点击的网站...

类似的东西:

if website1
  login = "username"
elsif website2
  login = "user"
elsif website3
  login = "login"
end

element = find("xpath#{login}xpath")