如何逐页浏览页面,并确定我在看哪个元素?

时间:2019-05-02 17:36:16

标签: c# selenium

前提: 我正在尝试编写一个尽可能抽象的Selenium程序,这样在进行新测试时,所需的工作最少。我想到的想法是让我遍历页面上的元素,然后使用该元素,所有属性,父元素,子元素(稍后可以找到,但不一定在该问题的范围内)不过)和其他类似的东西,然后将其打包到我制作的名为“元素”的对象中。运行此命令并获取页面上的每个元素之后,我将对页面进行更改,即在文本框中跳出Tab键,单击按钮等,然后再次进行迭代,并记下差异。

问题: 如何从页面顶部开始,并迭代页面上存在的每个元素。我想包含的元素包括但不限于标签,div,文本框,按钮等所有内容。我想找到所有元素,并将其添加到集合中。

以下任务: 在此之后,我将尝试找到它的属性,然后确定它是否有任何孩子以及是否有任何父母。

我在网上找到了有关如何通过id或name或其他名称来查找元素的方法,并且我可以找到多个类似的元素并将其打包到一个集合中,但是我看不出这有什么帮助我的特定案例,因为那样的话,我将不得不为每种单一类型的元素都做一个案例,这听起来比我想要的工作还要多。

编辑:这将不包括头部,仅包括身体。

1 个答案:

答案 0 :(得分:0)

您可以像这样从另一个IWebElement检索所有调用FindElements的子元素

IWebElement body = Driver.FindElement(By.TagName("Body"));
ReadOnlyCollection<IWebElement> bodyChilds = body.FindElements(By.XPath(".//*"));

这将返回身体的所有子元素。 然后,您可以遍历列表中的每个元素,找到其元素以了解它们是否具有子元素。

关于属性部分,据我所知,仅硒是不可能的,但是很容易找到关于如何使用javascript的示例