有没有一种方法可以刷新页面,直到屏幕上的某个元素存在?仅提供类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有一种方法可以刷新页面,直到屏幕上的某个元素存在?仅提供类相关的知识,希望对你有一定的参考价值。

我正在使用C#和Selenium来实现浏览器自动化,并希望刷新页面,直到存在与给定字符串匹配的元素。我该怎么办?

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

这是元素的外观。我希望页面刷新,直到页面上出现文本“ Breed Crewneck”(然后当然要单击该项目)为止。但是,我无权访问名称,ID或链接文本。此外,我无法使用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);

以上代码似乎有效。干杯!

答案

这里有一些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’]”)));

另一答案
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);

以上是关于有没有一种方法可以刷新页面,直到屏幕上的某个元素存在?仅提供类的主要内容,如果未能解决你的问题,请参考以下文章

检测没有视图状态的页面刷新

NVDA元素列表在页面导航后不会刷新

Python,Selenium:如何刷新页面直到元素存在

我无法刷新屏幕

如何禁止页面刷新,按页面上的刷新也不给刷新

如何转到页面上的特定元素? [复制]