Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium能否支持从动态生成的网页获取“XPath/Dom”和更多信息?_Dom_Xpath_Selenium - Fatal编程技术网

Selenium能否支持从动态生成的网页获取“XPath/Dom”和更多信息?

Selenium能否支持从动态生成的网页获取“XPath/Dom”和更多信息?,dom,xpath,selenium,Dom,Xpath,Selenium,我搜索了几个问题,但没有找到我的问题: 我想测试/验证2个系统的配置页面。但我面临3个挑战: 1.两个系统的页面看起来完全相同,但实际上相同itemstext、下拉列表、单选按钮等的dom/xPath信息完全不同。例如,页面上两个系统的设备名称字段有两个不同的xPath,例如sys1的xPath为//输入/abc,sys2的xPath为//输入/xyz 2.有时页面是动态生成的,因此一个系统的同一项的dom/xPath在不同时间可能不同 3.基于1和2,我很难编写一个脚本在所有系统上运行我们将来

我搜索了几个问题,但没有找到我的问题:

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

1.两个系统的页面看起来完全相同,但实际上相同itemstext、下拉列表、单选按钮等的dom/xPath信息完全不同。例如,页面上两个系统的设备名称字段有两个不同的xPath,例如sys1的xPath为//输入/abc,sys2的xPath为//输入/xyz

2.有时页面是动态生成的,因此一个系统的同一项的dom/xPath在不同时间可能不同

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

我的问题是:

1.selenium能否返回页面上有多少个“文本字段”下拉列表单选按钮对象

2.selenium能否返回问题1中每个对象的xPath/dom

我希望selenium可以返回所有对象和每个对象的xPath/dom信息,这样我就可以为不同的系统进行映射和调用。我可以通过比较相同对象的索引/位置来确定当前使用的xPath


感谢您的所有评论/帮助。

我不懂c,但Java有一个driver.findElementsBy.xpath/cssxpath/css值。这将返回页面中的元素数。如果您需要查找文本框,可以使用

driver.findElements(By.xpath(//input[@type='textbox']).size();
这将返回页面中文本框的数量

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


您可以使用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
或:


您使用的是selenium 1还是selenium 2?如果有人能告诉我如何通过JS或其他方式获取所有对象以及这些对象的xPath/dom/css,那也可以。谢谢。如果页面包含10个文本框,5个下拉列表。您知道如何获取每个对象的xPath吗?我需要对每个对象及其xPath/dom/css或其他内容进行映射这是Selenium可以处理的。Arran,谢谢!如何找到每个对象的xpath/dom信息?
IWebDriver driver = new FirefoxDriver();
var inputElements = driver.FindElements(By.XPath("//input")); // get all input elements
inputElements.Count(); // get how many input elements there are