2016-05-23 3 views
1

Ich implementiere viele Selenium-Tests. Manchmal versagen, meine Tests aufgrund eines StaleElementReferenceException so will ich diesen Ansatz überprüfen:Versuchen Sie "StaleElementReferenceException" in Selen zu vermeiden - ist dieser Ansatz in Ordnung?

Click Griff:

def clickHandle(expectedCondition: (By) => ExpectedCondition[WebElement], by: By, timeOut: Long): Unit = { 

    var count = 0 
    var isClicked = false 

    breakable { 

     while (count < 4 || !isClicked) { 
     try { 

      val element = driver.findElement... 

      element.click() 
      isClicked = true 
      break 

     } catch { 

      case e: StaleElementReferenceException => println("Trying to recover from a stale element") 
      count = count + 1 
     } 
     } 
    } 
    } 

Get Attribut Griff:

def getAttributeHandle(expectedCondition: (By) => ExpectedCondition[WebElement], by: By, timeOut: Long, attribute: String): String = { 

    var count = 0 
    var result = false 
    var str = "" 

    breakable { 

     while (count < 4 || !result) { 
     try { 

      val element = driver.findElement... 

      str = element.getAttribute(attribute) 
      result = true 
      break 

     } catch { 

      case e: StaleElementReferenceException => println("Trying to recover from a stale element") 
      count = count + 1 
     } 
     } 
    } 

    str 
    } 

Antwort

-1

Im Allgemeinen Wenn Sie die StaleElementReferenceException bekommen es ist ein Seitenladefehler. Alles was Sie tun müssen, ist eine Seite warten in warten, für einen Textwert hinzuzufügen, oder was auch immer auf der Seite ist, oder Sie können in einem Schlaf wie gerade gesagt:

sleep(10) 

Ich benutze Rubin so nicht zu 100% sicher, wie zu helfen, aber in der Regel, was ich tun würde, wenn ich stolpere, ist Add schläft oder debuggen Sie Ihren Code und fügen Sie Breakpoints in und Schritt durch Ihren Code, um zu sehen, an welchem ​​Punkt es bricht.

Verwandte Themen