硒Web驱动程序图标状态标识

时间:2019-02-22 23:16:22

标签: c# selenium selenium-webdriver webdriver

目前,我只能确定图标的状态。

我有一个具有2种状态的图标,分别处于锁定状态和解锁状态,并在单击该图标后进行了更改。  我知道要通过类名或X路径查找元素,但真正的问题是我需要知道图标的当前状态是什么。当我检查该图标时,我得到如下代码,并且我不知道哪个引用了该类的当前状态。

<span class="x-towbook-lock locked" title="Locked by accounting bot1">  
  <i class="fas fa-lock" onclick="CallsTabs.updateLockStatus(21108183, true, event);"></i>                             
  <i class="fas fa-lock-open" onclick="CallsTabs.updateLockStatus(21108183, false, event);"></i></span>

3 个答案:

答案 0 :(得分:1)

图标描述为锁定状态时,您似乎捕获了HTML。

要识别图标的状态,您可以编写一种方法来找到图标状态,并且可以使用以下解决方案:

public void FindIconState() 
{
    String IconClasses = driver.findElement(By.xpath("//span[contains(@class,'x-towbook-lock')]")).GetAttribute("class");
    if (IconClasses.Contains("locked"))
         Console.WriteLine("Icon state is LOCKED");
    else
         Console.WriteLine("Icon state is UNLOCKED");
}

现在,您可以随时在程序中的任何地方调用此方法:

FindIconState();

答案 1 :(得分:0)

您可以使用 getAttribute()方法确定状态。

考虑以下示例:

WebElement element  = driver.findElement(By.xpath("//span[@class='x-towbook-lock locked']"));
if(element.getAttribute("class").contains("locked")){
// Locked State .  
// do something 
}else{
// Unlocked State. 
// do something 
}

希望这会有所帮助!

答案 2 :(得分:0)

要获取图标的当前状态,可以检查css类属性中是否存在locked

public bool IsLocked()
{
    String cssClass = driver.FindElement(By.CssSelector("span.x-towbook-lock")).GetAttribute("class");
    return Array.IndexOf(cssClass.Split(' '), "locked") > -1;
}