有没有选择在Selenium Webdriver中提供任何元素的多个属性?

时间:2015-08-31 08:13:28

标签: java selenium selenium-webdriver

我有一个用java语言编写的Selenium WebDriver脚本,我需要在多个站点中运行。基本上脚本是为1个站点编写的,但其他站点也遵循相同的体系结构,并且这些站点中的元素属性也相同。所以我的脚本在所有这些网站上都能正常工作。

问题是,某些网站中的某些元素属性可能有所不同。那么在Selenium WebDriver中是否有任何选项可以为元素传递多个属性。

这样的东西
String elemprop = "Prop1|Prop2|Prop3"  // Properties separated by Pipe
driver.findelement(By.id(elemprop)).click();

因此,当它执行时,Selenium Webdriver应首先检查Prop1,然后检查Prop2,然后检查Prop3。

我在Rational功能测试器中看到过这个功能。想知道Selenium Webdriver是否也提供此功能?

感谢。

2 个答案:

答案 0 :(得分:1)

如果您的意思是检查多个属性,并且其中一个属性适合您当前特定网站的元素,您可以尝试这样做(在java中):

String xpath = "//*[@id='id1' or @id='id2' or @id='id3']";

driver.findElement(By.xPath(xpath));

答案 1 :(得分:0)

我建议您在此方案中考虑使用页面对象模型。你可以有一个公共的ParentPage(),它将在所有相似的页面中定义公共元素和方法,然后是不同的ChildPage1(),ChildPage2()等页面,这些页面将唯一地标识控件但是从父级继承。如下所示:

public class ParentPage {
    String xpath = null;
    public void commonMethod() {
        driver.findElement(By.xPath(xpath));
    }
}

public class ChildPage1 extends ParentPage {
    String xpath = "//*[@id='id1']";
}

这种方法的好处在于,您通常可以减少来自扩展XPath定义的错误和复杂性,并有助于清楚每个页面正在做什么。

相关问题