2016-05-19 15 views
0

Ich bin neu zu Selenium.Selen-Webdriver werfen Timeout-Ausnahme

Mein Problem ist, dass ich versuche, auf ein Element klicken, aber Selenium wirft eine timeout exception, auch wenn ich den Timeout-Wert erhöhen.

Muss ich xpath statt id verwenden?

Der HTML-Code ist:

enter image description here Mein Code sieht wie folgt aus

void searchquotation() throws TimeoutException { 
    try { 
      WebDriverWait wait = new WebDriverWait(driver, 15); 
      WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("SearchButton"))); 
      element.click(); 
     } 
    catch(TimeoutException e) { 
     System.out.println("Timeout occured"); 
     } 

Bin ich etwas falsch gemacht?

+0

Bitte vergewissern Sie sich zunächst bei Browser-Konsole dieses Javascript document.getElementsByName mit (‚search‘) Sie bekommen auf diese Schaltfläche oder nicht? –

Antwort

0

Der Eingabetyp hier ist submit (indem Sie auf Ihren HTML-Code schauen), also würde ich stark empfehlen, die submit() - Funktion von Selenium zu versuchen.

-1
try below code, even timeout exception occurs, it will try 4 time to click on it. assuming locator is correct By.name("SearchButton") 

    public void searchquotation() 
    int count=0; 
    while(count<4) 
    { 
    try { 
    WebElement x = driver.findElement(By.name("SearchButton"))); 
    WebDriverWait element=new WebDriverWait(driver,15); 
    element.until (ExpectedConditions.presenceOfElementLocated(By.name("SearchButton"))); 
    x.click(); 
count=count+4; 
    } 
    catch(TimeoutException e) { 
    count=count+1; 
    System.out.println("Timeout occured"); 
    continue; 
    } 
    } 
+0

haben es geschafft. Das Element ist in einer Tabelle eingeschlossen. Gibt es eine andere Möglichkeit, auf ein in td eingepacktes Element zuzugreifen? Unten ist der HTML-Code http://i.stack.imgur.com/WxJYp.jpg –

+0

Alle Antworten von Experten –

0

Anstelle von by.name sollten Sie stattdessen by.id verwenden. Verwenden Sie daher entweder von diesen:

  1. by.Id ("search")
  2. by.CssSelector ("input # search")
  3. by.Xpath ("// input [@ id =‘ search '] ")

Hinweis: Syntax falsch sein könnte, stellen Sie je nach Programmiersprache