我有一个By
类的变量。我希望调用FindElements
以返回相应的元素以及this的所有父元素By
。我该怎么做呢?
如果我正确理解了您的问题,则需要先找到By
元素,然后再找到父元素,直到找到根为止。
您可以使用XPath来获取父元素,直到到达页面根目录为止。所以像这样:
public ReadOnlyCollection<IWebElement> FindElementTree(By by)
{
List<IWebElement> tree = new List<IWebElement>();
try
{
IWebElement element = this.driver.FindElement(by);
tree.Add(element); //starting element
do
{
element = element.FindElement(By.XPath("./parent::*")); //parent relative to current element
tree.Add(element);
} while (element.TagName != "html");
}
catch (NoSuchElementException)
{
}
return new ReadOnlyCollection<IWebElement>(tree);
}
(可选)您可以在body
元素上停下来,而不是html
一个。
还要注意,这是相当慢的,特别是如果其嵌套的元素很深。更快的替代方法是使用ExecuteScript
运行使用相同逻辑的javascript代码段,然后一次返回所有元素。
问题内容: python + selenium是否有任何方法可以找到父元素,兄弟元素或子元素,就像 或 或 ? 例如: 我已经尝试过如下操作,但是失败了: 如何 获取输入元素的父级, 然后最终 选择选项 ? 问题答案: 您可以使用xpath 找到一个父元素: 为获得选择的选项制作一个单独的xpath怎么样,像这样:
我试图找到一种方法来获取div的值,但是我无法通过Xpath或CSSSelector找到元素。在这两种情况下(Xpath和cssSelector),Eclipse控制台都会显示错误消息: org.openqa.selenium.nosuchelementException:没有这样的元素:找不到元素:{“method”:“XPath”,“selector”:“//b[text()='protoco
问题内容: 在Python Selenium模块中,一旦有了对象,我可以使用以下命令获取其任何属性的值: 如果命名的属性不存在,则返回。 我的问题是,如何获取元素具有的所有属性的列表?似乎没有或方法。 我正在为Python使用Selenium模块的2.44.0版本。 问题答案: 这是 不可能的 使用硒webdriver的API,但你可以_执行JavaScript代码_来获取所有属性: 演示: 为了
问题内容: 有一个具有子元素的元素,那些子元素又具有子元素,依此类推。我想获取所有作为该元素后代的元素。谢谢。 问题答案: 试试这个: (Java) (C#)
问题内容: 我需要在我的xpath表达式中使用撇号(’),这需要使用webdriver查找元素 我需要使用下面的Xpath表达式 在查找元素功能中使用上述表达式时,我用单引号替换了双引号 问题答案: 使用如下所示的xpath: 希望这可以帮助。
问题内容: 我有3个div。 像这样: 他们将充满文字。我不确定多少。问题是,所有高度都必须相等。 我如何使用jQuery(或CSS)查找DIV最高的并将其他两个设置为相同的高度,从而创建3个相等高度的DIV。 这可能吗? 问题答案: 您不能轻松地通过高度选择或在CSS中进行比较,但是jQuery和一些迭代应该可以轻松解决此问题。我们将遍历每个元素并跟踪最高的元素,然后再次遍历并将每个元素的高度设