Есть ли способ обновить страницу, пока не появится элемент на экране? Только класс предоставляется - PullRequest
0 голосов
/ 03 октября 2019

Я использую C # и Selenium для автоматизации браузера и хочу обновить страницу, пока не существует элемент, соответствующий заданной строке. Как я могу это сделать?

<a class="name-link" href="/shop/sweatshirts/tymdtrivq/wbisud8yv">Breed Crewneck</a>

Так выглядит элемент. Я хочу, чтобы страница обновлялась до тех пор, пока на странице не появится текст «Breed Crewneck» (а затем, конечно, нажмите на элемент). Однако у меня нет доступа к имени, идентификатору или тексту ссылки. Кроме того, я не могу использовать XPath, поскольку он не имеет отношения к ключевому слову "Breed Crewneck". Я считаю, что есть решение с помощью реализации JavaScript, но я не продвинулся далеко в этой перспективе.

EDIT - пред. редактирование было удалено из-за недопонимания. Извинения.

РЕДАКТИРОВАТЬ 2

bool elementFound = false;

            do
            {
                driver.Navigate().Refresh();
                try
                {
                    driver.FindElement(By.LinkText("Breed Crewneck"));
                    elementFound = true;
                }catch(NoSuchElementException error)
                {
                    Console.WriteLine("No such element found!");
                }
            } while (elementFound == false);

Выше приведенный код работает. Ура!

1 Ответ

0 голосов
/ 03 октября 2019

Вот некоторый код C # для обновления страницы, пока в элементе не появится текст, который вы ищете.

var wait = new WebDriverWait(Driver, 10000);

while (driver.FindElement(By.XPath("//a[@class=‘name-link’]")).Text != “Breed Crewneck”)
{

    driver.Navigate().Refresh();
    wait.Until(ExpectedConditions.ElementIsVisible(By.XPath(“//a[@class=‘name-link’]”)));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...