2016-01-14 61 views
0

嗨,我有麻煩使此代碼工作,我需要幫助。 的HTML代碼selenium webdriverwait是一個定時器是innerText

<span id="banner">Rolling in 10.00...</span> 

這種「有錢10.00 ...」是一個InnerText和10.00是一個計時器,這意味着它會繼續運行,直到0。我很感興趣,試圖運行代碼時計時器在20.00。示例

<span id="banner">Rolling in 20.00...</span> 

但是我有很多麻煩。這是一些代碼的工作,但有插座異常錯誤(http://puu.sh/mubug/c33d8501bf.png

public void waitroller2() 
    { 
     Console.WriteLine("start roller timer"); 
     WebDriverWait wait = new WebDriverWait(PropertiesCollection.driver, TimeSpan.FromSeconds(1000)); 
     Stopwatch watch = new Stopwatch(); 

     IWebElement banner = wait.Until(ExpectedConditions.ElementIsVisible(By.Id("banner"))); 

     watch.Start(); 
     do 
     { 
      if (banner.Text.Equals("Rolling in 20.00...")) 
      { 
       Console.WriteLine("roller ended"); 
       return; 
      } 
     } while (watch.Elapsed.Seconds < 1000); 

     throw new NoSuchElementException(); 
    } 

這種方法完全不

public void waitroller1() 
    { 
     Console.WriteLine("waitroller"); 
     new WebDriverWait(PropertiesCollection.driver, TimeSpan.FromMinutes(1.5)).Until(ExpectedConditions.TextToBePresentInElement(rolling,"Rolling in 20.00...")); 
     Console.WriteLine("roller end"); 
    } 

工作,我認爲主要的問題是,當我繼續使用這個webdriverwait長時間它不工作有套接字問題。請我需要幫助任何人都可以教我如何做

+0

你有void函數你返回什麼? –

回答

0

試試這個。

try 
{ 
    string timeToWait = new String(driver.FindElement(By.Id("banner")).Text.ToCharArray().Where(c => Char.IsDigit(c)).ToArray()).Substring(0,2); 

    int ttw = Convert.ToInt32(timeToWait); 

    System.Threading.Thread.Sleep(ttw * 1000); 
} 
catch(Exception ex) 
{} 
+0

我不知道你在做什麼我的freiend你可以解釋 – user5783991

+0

如果我理解你正確,你需要等待寫在innerText中的時間,所以我從字符串中獲取時間並讓程序等待。 –

+0

是的,我的朋友,但你的代碼立即循環非常快我的朋友,我需要繼續使用這個。意思是當無線電文是「滾動20.00 ...」時,我執行動作並等待下一個「滾動20.00 ...」 – user5783991

0

這就是你需要的。

 IWebElement banner = driver.FindElement(By.Id("banner")).Text; 
     bool status = false; 
     int tryTimes = 15; 

     do 
     { 
      if (banner.Text.Equals("Rolling in 20.00...")) 
      { 
       Console.WriteLine("roller ended"); 
       status = true; 
      } 
      else 
      { 
       System.Threading.Thread.Sleep(1000); 
       banner = driver.FindElement(By.Id("banner")).Text; 
       tryTimes--; 
      } 
     } while (!status && tryTimes > 0); 
相關問題