我刚开始使用 selenium c#。我有一个树视图,它的位置不一致,所以如果它没有扩展,我想扩展它,如果它已经扩展,它应该是原样。类似的崩溃。
这是树展开的时候
<div class="rtTop">
<span class="rtSp"></span>
<span class="rtMinus"></span>
<span class="rtIn">Roles</span>
</div>
这是它崩溃的时候
<div class="rtTop">
<span class="rtSp"></span>
<span class="rtPlus"></span>
<span class="rtIn">Roles</span>
</div>
我目前正在使用
public static string treeviewExpand( string treeviewExpandButton)
{
treeviewExpandButton = "//span[text()='" + treeviewExpandButton + "']/preceding-sibling::span[@class='rtPlus']";
return treeviewExpandButton;
}
public static string treeviewCollapse(string treeviewCollapseButton)
{
treeviewCollapseButton = "//span[text()='" + treeviewCollapseButton + "']/preceding-sibling::span[@class='rtMinus']";
return treeviewCollapseButton;
}
如果调用适当的操作,上述 xpath 工作正常。但我想要一个通用的动作函数来展开和折叠树,而不管其当前状态如何。
我试图通过使用文本获取树视图节点的当前类名。在这里,我试图获取当前类“rtPlus”或“rtMinus”,但是当我尝试使用标签名称作为跨度获取前面的兄弟时,我得到的标签跨度是“rtsp”类而不是“rtPlus”类或“rtMinus”即使检查显示其前一个兄弟跨度具有“rtPlus”或“rtMinus”类
我在用
public static string treeviewExpandCollapse(string treetext)
{
treetext= "//span[text()='" + treetext+ "']";
IWebElement element;
element = driver.FindElement(treetext).FindElement(By.XPath("./preceding-sibling::span"));
string calsss = element.GetAttribute("class");
Thread.Sleep(2000);
}
XPath 可能很棘手,尤其是当您开始将多个FindElement
XPath链接在一起时。对于您的场景,我会通过仅使用一个 XPath 来保持简单:
"//span[text()='" + text + "']/parent::div/span[2]"
解释:
//span[text()='" + text + "']
- 选择<span>
给定的text
<span class="rtIn">Roles</span>
/parent::div
- 选择<span>
的父级
<div class="rtTop">
/span[2]
- 在父级中,选择<span>
索引 2 处(无论<span>
是展开还是折叠)
<span class="rtPlus"></span>
代码:
IWebElement element = driver.FindElement(
By.XPath("//span[text()='" + text + "']/parent::div/span[2]"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句