目前,我只能确定图标的状态。
我有一个具有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>
答案 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;
}