html 如何让selenium chromedriver在元素更改时执行回调?(C#)

sg24os4d  于 2023-03-27  发布在  C#
关注(0)|答案(1)|浏览(108)

例如,网页包含以下元素:
<div id="mydiv">abcd</div>
几秒钟后,div的内容更改为任何其他文本,比如1234。
我希望我的C#代码能够注册它,并立即使用某种事件处理器进行响应。
目前,我的代码使用System.Threading.Timer,它以设置的间隔检查元素内的内容。但是,我希望我的代码等待这些更改,并在需要时精确执行,而不是只是盲目地运行,直到它们真正出现。

oewdyzsn

oewdyzsn1#

这里有一个简单的例子...(未经测试):

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
   try{
     WebElement myDiv = wait.until(ExpectedConditions.visibilityOfElementLocatedBy(By.xpath("//div[@id='mydiv']"));
       }
       catch (Exception ex) {
       // deal with timeout... 
       }
    try{
       wait.until(ExpectedConditions.stalenessOf(myDiv);
       }
    catch(Exception ex) {
        // deal with timeout...might want to check for null before try here
        }
        //now do whatever it is you want to do... 
        //if you need to work with this element, you'll want to grab the reference again

相关问题