【问题标题】:selenium expand collapse treeview C#硒展开折叠树视图C#
【发布时间】:2017-11-24 10:39:44
【问题描述】:

我刚开始使用 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” 但是当我尝试使用标签名称作为 span 来获取前面的同级时,我得到的是带有类“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);
}

【问题讨论】:

    标签: c# selenium telerik treeview telerik-mvc


    【解决方案1】:

    XPath 可能很棘手,尤其是当您开始将多个 FindElement 和 XPath 链接在一起时。对于您的场景,我会通过仅使用一个 XPath 来保持简单:

    "//span[text()='" + text + "']/parent::div/span[2]"
    

    解释:

    • //span[text()='" + text + "'] - 使用给定的text 选择&lt;span&gt;
      • &lt;span class="rtIn"&gt;Roles&lt;/span&gt;
    • /parent::div - 选择 &lt;span&gt; 的父级
      • &lt;div class="rtTop"&gt;
    • /span[2] - 在父级中,选择索引 2 处的 &lt;span&gt;(无论 &lt;span&gt; 是展开还是折叠)
      • &lt;span class="rtPlus"&gt;&lt;/span&gt;

    代码:

    IWebElement element = driver.FindElement(
        By.XPath("//span[text()='" + text + "']/parent::div/span[2]"));
    

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 2010-12-15
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      相关资源
      最近更新 更多