Ожидание текста метки в веб-драйвере Selenium в C # - PullRequest
0 голосов
/ 01 ноября 2018

Сообщество переполнения приветствий,

У меня есть быстрый вопрос, который, когда ответит, поможет кому-либо еще, кто хочет использовать Selenium и C #, дождаться, пока на веб-странице не появится текст, который не является кликабельной ссылкой, а показан в теге ярлыка.

У меня есть следующий пример кода,

<div class="class1" style="style7">
<label id="statusBar" class="class2">Not Ready</label>
</div>

Использование Selenium и C # Я пытаюсь вставить ожидание, пока ожидаемое условие не остановит код, а затем возобновит работу, как только условие будет выполнено.

Я могу найти метку и выполнить действие, если оно найдено XPath ...

wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='statusBar']")));

Но, когда я пытаюсь дождаться, пока текст «Не готов» будет виден внутри этого тега метки, сценарий C # застревает в этой точке и не может найти текст внутри метки.

Это то, что я пробовал, основываясь на нескольких статьях о переполнении стека, в которых этот вопрос не рассматривается.

wait.Until(ExpectedConditions.TextToBePresentInElementLocated(By.Id("statusBar"), "Not Ready"));
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='statusBar']//label[contains(text(), 'Not Ready')]")));
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@id='statusBar'][contains(text(), 'Not Ready')]")));

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 02 ноября 2018

Кажется, ты был довольно близко. Вам нужно вызвать WebDriverWait , и вы можете использовать любое из следующих решений:

  • Использование TextToBePresentInElementLocated():

    • CssSelector

      wait.Until(ExpectedConditions.TextToBePresentInElementLocated(By.CssSelector("label.class2#statusBar"), "Not Ready"));
      
    • XPath:

      wait.Until(ExpectedConditions.TextToBePresentInElementLocated(By.XPath("//label[@class='class2' and @id='statusBar']"), "Not Ready"));
      
...