2016-05-04 15 views
0

Im Folgenden Code WebDriver Ausnahme Element is not clickableUI_element ist nicht anklickbar

public static void hpLinksClick() throws InterruptedException{  
      UI_GenericMethods.gmValidLogin(); 
      for(int i=0;i<=Li_WE.size()-1;i++){ 
       WebElement WEObj=Li_WE.get(i); 
       //Thread.sleep(500); 
       UI_GenericMethods.gmMouseOverAndClik(WEObj);  
       String linkText=Li_WE.get(i).getText(); 
       System.out.println(linkText); 
       if(linkText.equalsIgnoreCase("More")){ 
       for(int i1=0;i1<=More_Li.size()-1;i1++){    
        WebElement we_more=More_Li.get(i1); 
        Thread.sleep(500);               UI_GenericMethods.gmMouseOverAndClik(we_more);        
      } 
    } 
} 
    WebElement we_molst=DRIVER_OBJ.findElement(By.linkText("More")); 
      UI_GenericMethods.gmMouseOverAndClik(we_molst); 
      for(int j=0;j<=More_Litd.size()-1;j++){ 
       WebElement we_molist=More_Litd.get(j);  
       UI_GenericMethods.gmMouseOverAndClik(we_molist); 
       Thread.sleep(1000);     
       we_molst=DRIVER_OBJ.findElement(By.linkText("More"));     
       UI_GenericMethods.gmMouseOverAndClik(we_molst);    
       } 
} 
+0

Exception in thread "main" org.openqa.selenium.WebDriverException: Element an einem Punkt nicht angeklickt ist (1019, 62,5). Anderes Element würde den Klick erhalten:

(ACHTUNG: Der Server hat keine Stacktrace-Informationen angegeben) Befehlsdauer oder Timeout: 25 Millisekunden Build-Info: Version: '2.52.0', Revision: '4c2593c', Zeit: '2016 -02-11 19:06:42 ' –

Antwort

0

hey @ Amar Nath Yadav nach Ihrem Fehler gibt.

Bitte beachten Sie, dass Sie die richtige Locator-Strategie verwenden, um auf das UI_element zu klicken. Trotzdem erhalten Sie einen Fehler, weil das Element, auf das Sie klicken möchten, nicht im DOM positioniert ist, daher Ausnahme im Thread "main" org.openqa.selenium.WebDriverException: Element kann nicht an Punkt geklickt werden (1019, 62.5). Anderes Element erhalten würde den Klick

so wenden Sie sich bitte etwas Zeit, um dieses UI-Element gibt eine feste Position im DOM zu haben, so verwenden wie

Thread.sleep(5000); 

this helps

0

Wenn Ihr Problem ist, dass das Element den Bildschirm (und als Folge unter so etwas wie eine Kopfleiste) gescrollt, können Sie es wieder in den Blick wie diese versuchen Scrollen:

private void scrollToElementAndClick(WebElement element) { 
int yScrollPosition = element.getLocation().getY(); 
js.executeScript("window.scroll(0, " + yScrollPosition + ");"); 
element.click(); } 

, wenn Sie müssen Sie auch in einem statischen Offset hinzufügen könnte (wenn Sie zum Beispiel einen Seitenkopf, die 200px hoch und immer angezeigt ist):

public static final int HEADER_OFFSET = 200; 
private void scrollToElementAndClick(WebElement element) { 
int yScrollPosition = element.getLocation().getY() - HEADER-OFFSET; 
js.executeScript("window.scroll(0, " + yScrollPosition + ");"); 
element.click(); 
} 

können Sie direkt mit JavascriptExecutor klicken (Allerdings gilt dies nicht)

WebElement element= driver.findElement(By."Your Locator")); 

JavascriptExecutor executor = (JavascriptExecutor) driver; 
executor.executeScript("arguments[0].click();", element); 

Hoffe, es wird Ihnen helfen :)

+0

Danke shubham, –

+0

Amar können Sie die Antwort von allen nicht akzeptieren ... bitte klicken Sie auf mein rechtes Zeichen, wenn es Ihnen wirklich hilft –

Verwandte Themen