Идентификация состояния значка веб-драйвера Selenium - PullRequest
0 голосов
/ 23 февраля 2019

В настоящее время я застрял в определении состояния значка.

У меня есть значок, который имеет 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 голосов
/ 23 февраля 2019

Чтобы узнать текущее состояние иконки, вы можете проверить, существует ли locked в атрибуте класса css:

public bool IsLocked()
{
    String cssClass = driver.FindElement(By.CssSelector("span.x-towbook-lock")).GetAttribute("class");
    return Array.IndexOf(cssClass.Split(' '), "locked") > -1;
}
0 голосов
/ 23 февраля 2019

Кажется, что вы захватили 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();
0 голосов
/ 23 февраля 2019

Вы можете определить состояние, используя метод 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 
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...