Selenium Webdriver - 元素不能在Firefox中点击错误 [英] Selenium Webdriver - element not clickable error in firefox

查看:611
本文介绍了Selenium Webdriver - 元素不能在Firefox中点击错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通常出现在Chrome驱动程序中的元素不可点击的错误恰好在Firefox中显示。显示的错误消息:

pre $ 线程main中的异常org.openqa.selenium.WebDriverException:元素不可点击141,299.29998779296875)。其他元素将收到点击:< div class =showOnTopid =loadingPanelContainer>< / div>
命令持续时间或超时:209毫秒
构建信息:版本:'2.51.0',修订:'1af067dbcaedd7d2ab9af5151fc471d363d97193',时间:'2016-02-05 11:20:57'
系统信息:host:'Bhaveen-ThinkPad',ip:'127.0.1.1',os.name:'Linux',os.arch:'i386',os.version:'3.13.0-77-generic',java .version:'1.7.0_95'
会话ID:08e0d738-b946-4886-a179-9659d44b717b
驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver
功能[{platform = LINUX ,acceptSslCerts = true,javascriptEnabled = true,cssSelectorsEnabled = true,databaseEnabled = true,browserName = firefox,handlesAlerts = true,nativeEvents = false,webStorageEnabled = true,rotate = false,locationContextEnabled = true,applicationCacheEnabled = true,takesScreenshot = true,version = 44.0.2}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在构造函数中使用
。 .createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver .java:678)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:85 )
at config.KeyActions.handleLeftMenu(KeyActions.java:479)
at scripts.Vital_Data_Script.setVitalData(Vital_Data_Script.java:383)
at scripts.Vital_Data_Script.executeActions(Vital_Data_Script.java: 95)
at scripts.Vital_Data_Script.executeTestCase(Vital_Data_Script.java:60)
at scripts.Vital_Data_Script.main(Vital_Data_Sc ript.java:31)


解决方案

元素是可点击的,您可以使用:

pre code $ WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.elementToBeClickable(By。< your locator>));

有时甚至需要将鼠标悬停在元素上以使其可点击。你可以这样做:

pre $ String mouseOverScript =if(document.createEvent){var evObj = document.createEvent(' ();}};} else if(document.createEventObject){arguments [0] .fireEvent('onmouseover');} ;
((JavascriptExecutor)driver).executeScript(mouseOverScript,
driver.findElement(By。< your locator>));

完成这个操作后,您可以尝试:

正常的click()函数:

  driver.findElement(By。< your locator>)。click(); 

OR



非原生javascript执行者:

  JavascriptExecutor executor =(JavascriptExecutor)驱动程序; 
executor.executeScript(arguments [0] .click();,driver.findElement(By。< your locator>));


The element not clickable error that usually appears in chrome driver happens to be showing in firefox also. The error message shown:

  Exception in thread "main" org.openqa.selenium.WebDriverException: Element is not clickable at point (141, 299.29998779296875). Other element would receive the click: <div class="showOnTop" id="loadingPanelContainer"></div>
Command duration or timeout: 209 milliseconds
Build info: version: '2.51.0', revision: '1af067dbcaedd7d2ab9af5151fc471d363d97193', time: '2016-02-05 11:20:57'
System info: host: 'Bhaveen-ThinkPad', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.13.0-77-generic', java.version: '1.7.0_95'
Session ID: 08e0d738-b946-4886-a179-9659d44b717b
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true,    browserName=firefox, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, rotatable=false, locationContextEnabled=true,  applicationCacheEnabled=true, takesScreenshot=true, version=44.0.2}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:85)
    at config.KeyActions.handleLeftMenu(KeyActions.java:479)
    at scripts.Vital_Data_Script.setVitalData(Vital_Data_Script.java:383)
    at scripts.Vital_Data_Script.executeActions(Vital_Data_Script.java:95)
    at scripts.Vital_Data_Script.executeTestCase(Vital_Data_Script.java:60)
    at scripts.Vital_Data_Script.main(Vital_Data_Script.java:31)

解决方案

You should probably wait for the element to be clickable, You can use:

WebDriverWait wait = new WebDriverWait(driver, 30); 
wait.until(ExpectedConditions.elementToBeClickable(By.<your locator>));

OR Sometimes you will even need to hover over the element to make it clickable. This you can do by this:

String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover', true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}";
            ((JavascriptExecutor) driver).executeScript(mouseOverScript,
                     driver.findElement(By.<your locator>));

After doing this you can try :

Normal click() function:

driver.findElement(By.<your locator>).click();

OR

Non-native javascript executor:

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();",  driver.findElement(By.<your locator>));

这篇关于Selenium Webdriver - 元素不能在Firefox中点击错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆