晴天倒影 发表于 2017-11-2 12:41:53

【求助】Linux服务器下PhantomJS找不到元素

框架:Selenium+Java+testNG+Jenkins
背景:Jenkins部署在了Linux环境,在自己本地的Windows环境跑测试程序都没问题问题描述:因为Linux环境不能执行exe,所以直接在服务器上安装了PhantomJS,代码中这样描写的:
DesiredCapabilities caps = new DesiredCapabilities();
((DesiredCapabilities)caps).setJavascriptEnabled(true);
((DesiredCapabilities)caps).setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,"/opt/env/phantomjs-2.1.1-linux-x86_64/bin/phantomjs");
driver = new PhantomJSDriver(caps);

但是上传到Git上再用Jenkins来Build的时候,报错了,提示说找不到元素:

WebElementLocator - _handleLocateCommand - Element(s) NOT Found: GAVE UP. Search Stop Time: 1509592562254phantomjs://platform/console++.js:263 in errororg.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: nulljava.lang.reflect.InvocationTargetExceptionCaused by: org.openqa.selenium.NoSuchElementException: {"errorMessage":"Unable to find element with name 'login_userName'"}
大家有什么经验来判断这到底是哪里的问题吗?

本才 发表于 2017-11-2 14:36:56

本帖最后由 本才 于 2017-11-2 14:37 编辑

从报错信息上看来是找不到 web 元素'login_userName'; 有没有配置路径错误的可能?

晴天倒影 发表于 2017-11-3 09:45:23

本才 发表于 2017-11-2 14:36
从报错信息上看来是找不到 web 元素'login_userName'; 有没有配置路径错误的可能?

PhantomJS的路径肯定是对的,不然PhantomJS不能启动起来,元素的位置也肯定是对的,因为在Windows系统中用Firefox或者PhantomJS都可以跑成功,所以我也不太清楚是哪里出了错,是不是调用Linux安装的PhantomJS的话,还得在pom文件中加什么依赖?

本才 发表于 2017-11-3 14:28:58

你的 Linux 发行版是啥,CentOS,Ubuntu,SUSE?

本才 发表于 2017-11-3 14:56:03

selenium.webdriver.support.wait.WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None) ,将 poll_frequency的值调整一下,试试。参考了https://stackoverflow.com/questions/28769105/phantom-js-driver-is-unable-to-locate-elements-sometimes,这篇技术解决。
页: [1]
查看完整版本: 【求助】Linux服务器下PhantomJS找不到元素