Selenium 2.0和findBy - 自定义属性或Expando属性

时间:2011-11-17 23:11:20

标签: automated-tests webdriver selenium-webdriver expando

任何人都有建议在自定义属性中查找网页上的元素,例如expando属性?

问题:网站为按钮使用了大量的JSP和动态图像。它们没有静态名称或ID。 (想想注册或结账过程,其中每个页面都有一个“下一个”或“继续”按钮,但它根据当前上下文动态地将您带到某处)

建议的解决方案:我最近已经通过“btn-tag-title”的自定义expando属性回答了我一再要求这些不可自动化的请求。

如果页面上的每个元素都有一个名为btn-tag-title =的唯一(但是自定义)属性,那么selenium 2.0每次都能找到它可靠吗?

其他建议的解决方案?

    log.info(driver.getCurrentUrl());
    assertTrue(selenium.isElementPresent("btn-tag-title=Sign In"));
    selenium.type("name=username", "demo");
    selenium.type("name=password", "tester");
    selenium.click("btn-tag-title=Sign In");
    log.info(driver.getCurrentUrl());

1 个答案:

答案 0 :(得分:0)

不确定。您可以在XPath或CSS定位器中引用该元素的任何属性。例如:

assertTrue(selenium.isElementPresent("//*[@btn-tag-title='Sign In']"));
...
selenium.click("//*[@btn-tag-title='Sign In']");

assertTrue(selenium.isElementPresent("css=*[btn-tag-title='Sign In']"));
...
selenium.click("css=*[btn-tag-title='Sign In']");

对于它的价值,如果你的开发人员可以在每个有趣的元素上放置一个具有保证唯一值的自定义属性,你应该问他们为什么不将这个值放在id=属性中。因为元素ID在HTML,DOM和Selenium中是特殊的,并且元素的ID可以比其他任何技术更快地定位。