0

我已经搜索了几个问题,但我没有弄清楚我的问题:

我想测试/验证 2 个系统的配置页面。但我面临三个挑战:

1.两个系统的页面看起来完全一样,但实际上相同项目(文本、下拉列表、单选按钮等)的dom/xPath信息完全不同。例如页面上2个系统的“Device Name”字段有2个不同的xPath,比如sys1的xPath是“//input/abc”,sys2的xPath是“//input/xyz”。

2.有时页面是动态生成的,所以一个系统的同一个项目的dom/xPath在不同的时间可能会不同。

3.基于1和2,我很难写一个脚本在所有系统上运行(我们将来会有更多的系统)。我不想为不同的系统定义不同的 xpath/dom 数据库。

我的问题是:

1. selenium 可以在页面上返回多少个“文本字段”“下拉列表”“单选按钮”对象?

2.selenium能否返回Question1中每个对象的xPath/dom?

我希望 selenium 可以返回所有对象和每个对象的 xPath/dom 信息,以便我可以进行映射并调用不同的系统(我可以通过比较“相同”对象的索引/位置来决定当前使用哪个 xPath)。

感谢所有评论/帮助。

4

2 回答 2

0

您可以将 Linq 用于这样的事情。例如,可以通过以下方式获取所有输入元素:

IWebDriver driver = new FirefoxDriver();
var inputElements = driver.FindElements(By.TagName("input")); // get all input elements
inputElements.Count(); // get how many input elements there are

或者:

IWebDriver driver = new FirefoxDriver();
var inputElements = driver.FindElements(By.XPath("//input")); // get all input elements
inputElements.Count(); // get how many input elements there are
于 2012-06-18T08:43:17.433 回答
0

我不知道 c#,但对于 Java,有一个 driver.findElements(By.xpath/css(xpath/css value)))。这将返回页面中元素的数量。如果它是你必须找到的文本框,你可以使用类似的东西

driver.findElements(By.xpath(//input[@type='textbox']).size();

这将返回页面中文本框的数量。

对于问题 2 - 检查这个。SO中有一个类似的问题。

如何使用 Javascript 计算元素的 XPath 位置?

于 2012-06-18T05:10:24.087 回答