UI_element不可点击

时间:2016-05-04 10:57:13

标签: selenium

下面的代码提供了webdriver异常Element is not clickable

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);             
                }
}

2 个答案:

答案 0 :(得分:0)

根据你的错误,嘿@Amar Nath Yadav。

请注意,您正在使用正确的定位器策略来单击UI_element,但是您仍然会收到错误,因为您要单击的元素存在于DOM内但仍然没有固定在DOM内的位置因此错误线程“main”中的异常org.openqa.selenium.WebDriverException:元素在点(1019,62.5)处不可单击。其他元素将收到点击

所以请给一些UI元素一些时间在DOM中有一个固定的位置,所以像

一样使用
Thread.sleep(5000);

希望这有帮助

答案 1 :(得分:0)

如果您的问题是元素从屏幕滚动(并且因此在标题栏之类的内容下滚动),您可以尝试将其滚动到视图中,如下所示:

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

如果需要,还可以添加静态偏移量(例如,如果页面标题高200像素且始终显示):

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(); 
}

您可以使用JavascriptExecutor直接点击(不推荐)

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

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

希望它会对你有所帮助:)。