下面的代码提供了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);
}
}
答案 0 :(得分:0)
请注意,您正在使用正确的定位器策略来单击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);
希望它会对你有所帮助:)。