如何使用selenium c#检测web元素中的更改?

如何使用selenium c#检测web元素中的更改?,c#,selenium,xpath,webdriver,C#,Selenium,Xpath,Webdriver,我试图找到一个合适的方法来进行以下操作: IWebElement content = driver.FindElementByXPath( myXPath ); while(true) { if ( !content.Text.Equals ( driver.FindElementByXPath ( myXPath ).Text ) ) { content = driver.FindElementByXPath ( myXPath );

我试图找到一个合适的方法来进行以下操作:

IWebElement content = driver.FindElementByXPath( myXPath );

while(true)
{
    if ( !content.Text.Equals ( driver.FindElementByXPath ( myXPath ).Text ) )
    {
            content = driver.FindElementByXPath ( myXPath );
            Console.WriteLine ( content.Text );
    }
}

当内容更改时,我的代码在myXPath上打印内容。但显然,这不是一种有效的方法。有没有合适的方法来监听XPath位置的更改?

while循环占用了大部分CPU使用率 一个小小的改变可以显著提升您的性能

    while(true)
{
    if ( !content.Text.Equals ( driver.FindElementByXPath ( myXPath ).Text ) )
    {
            content = driver.FindElementByXPath ( myXPath );
            Console.WriteLine ( content.Text );
            Thread.Sleep(1); //add this code
    }
}
我建议采用以下方法:

    public bool StopWatchLoop<T>(Func<string, T> getMethod, string getData, T cond) where T : new()
    {
        var i = getMethod(getData);
        var sw = new Stopwatch();
        sw.Start();
        while (Compare(i, cond) && sw.Elapsed < TimeSpan.FromSeconds(120))
        {
            i = getMethod(getData);
            Thread.Sleep(50);
        }
        Trace.WriteLine($"Expected: {cond.ToString()} actual {i} - data: {getData}");
        return (Compare(i, cond)) ? true : false;
    }

    private bool Compare<T>(T x, T y)
    {
        return EqualityComparer<T>.Default.Equals(x, y);
    }
public bool StopWatchLoop(Func-getMethod,string-getData,T-cond),其中T:new()
{
var i=getMethod(getData);
var sw=新秒表();
sw.Start();
while(比较(i,cond)和&sw.经过的时间
就你而言。get方法用作采样器,cond变量是EXCED文本

因此,现在您可以使用:

StopWatchLoop<string>(getElementText, myXpath, Content.Text);
StopWatchLoop(getElementText、myXpath、Content.Text);
上面的代码对元素进行采样的最长时间为120秒,因为while(true)是错误的做法