PhantomJS无法从Java运行JS:拒绝将字符串计算为JavaScript
您好,我正在做一个学校项目,使用PhantomJS.exe(PhantomJS-2.1.1)和selenium(selenium-server-standalone-3.7.1.jar驱动程序)在windows上迭代LinkedIn中的所有用户数据 我发现在LinkedIn中有很多延迟加载的元素,因此我需要在PhantomJS浏览器中执行javascript,向下滚动最后加载的元素以加载所有元素并获取所有数据 获取特定LinkedIn用户的URL后,如下所示:PhantomJS无法从Java运行JS:拒绝将字符串计算为JavaScript,javascript,java,selenium,selenium-webdriver,phantomjs,Javascript,Java,Selenium,Selenium Webdriver,Phantomjs,您好,我正在做一个学校项目,使用PhantomJS.exe(PhantomJS-2.1.1)和selenium(selenium-server-standalone-3.7.1.jar驱动程序)在windows上迭代LinkedIn中的所有用户数据 我发现在LinkedIn中有很多延迟加载的元素,因此我需要在PhantomJS浏览器中执行javascript,向下滚动最后加载的元素以加载所有元素并获取所有数据 获取特定LinkedIn用户的URL后,如下所示: driver.get("Fullu
driver.get("FullurlToLinkedInUser");
DesiredCapabilities caps = new DesiredCapabilities();
((DesiredCapabilities) caps).setJavascriptEnabled(true);
((DesiredCapabilities) caps).setCapability("takesScreenshot", true);
((DesiredCapabilities) caps).setCapability(
PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
"C:/Users/Bernad/Desktop/FIIT/ING/SEM1/AOVS/JAVA_selenium_phantomjs/phantomjs.exe" //java web start / jnpl file...
// "/Controller/phantomjs.exe"
);
//SET enabled javascript for php script on WEB page to transform it to picture:
caps.setJavascriptEnabled(true);
String [] phantomJsArgs = {"--web-security=no", "--ignore-ssl-errors=yes"};
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, phantomJsArgs);
//CREATING WEB driver
driver = new PhantomJSDriver(caps);
然后,我能够成功地接收页面上的最后一个元素,并且我正在尝试此代码(不是我自己的,复制自:):
这样调用这个函数之后:
driver = scrollToBottom(driver,myWebElement, 2);
我将收到此错误:
{"errorMessage":"
Refused to evaluate a string as JavaScript because 'unsafe- eval' is not an allowed source of script in the following Content Security Policy directive ... }
我正在创建WebDriver,如下所示:
driver.get("FullurlToLinkedInUser");
DesiredCapabilities caps = new DesiredCapabilities();
((DesiredCapabilities) caps).setJavascriptEnabled(true);
((DesiredCapabilities) caps).setCapability("takesScreenshot", true);
((DesiredCapabilities) caps).setCapability(
PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
"C:/Users/Bernad/Desktop/FIIT/ING/SEM1/AOVS/JAVA_selenium_phantomjs/phantomjs.exe" //java web start / jnpl file...
// "/Controller/phantomjs.exe"
);
//SET enabled javascript for php script on WEB page to transform it to picture:
caps.setJavascriptEnabled(true);
String [] phantomJsArgs = {"--web-security=no", "--ignore-ssl-errors=yes"};
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, phantomJsArgs);
//CREATING WEB driver
driver = new PhantomJSDriver(caps);
我不知道这是否与我之前遇到的错误有关,在我登录LinkedIn并继续连接到我的联系人后,驱动程序中异步发生的错误,这些错误不会使PhantomJS崩溃,但会发生如下错误:
[ERROR - 2017-11-20T11:25:47.737Z] Session [8dd6f810-cde5-11e7-9a5e-a3938000ab70] - page.onError - msg: TypeError: null is not an object (evaluating 'c.classList')
phantomjs://platform/console++.js:263 in error
[ERROR - 2017-11-20T11:25:47.737Z] Session [8dd6f810-cde5-11e7-9a5e-a3938000ab70] - page.onError - stack:
h (https://static.licdn.com/scds/concat/common/js?h=3kp2aedn5...:71
(anonymous function) (https://static.licdn.com/scds/concat/common/js h=3kp2aedn5pmamdr4dk4n8atur-3ti5bgrnb6id...:71)
(anonymous function) (https://static.licdn.com/scds/concat/common/js?h=3kp2aedn5pmamdr4dk4n8atur-3ti5bgrnb6idjt...:71)
(anonymous function) (https://static.licdn.com/scds/concat/common/js?h=3kp2aedn5pmamdr4dk4n8atur-3ti5bgrnb6idjtk0w...:71)
phantomjs://platform/console++.js:263 in error
[ERROR - 2017-11-20T11:25:49.998Z] Session [8dd6f810-cde5-11e7-9a5e-a3938000ab70] - page.onError - msg: [object XMLHttpRequest]
我确信我的WebElement发送功能存在。请帮我一个忙,因为我没有找到类似的JAVA实现解决方案。提前谢谢。这个问题对您有帮助吗?抱歉,没有,我已经尝试了“-web security=no”,请确认。我找到了解决问题的方法,但没有找到解决这些错误的方法,也没有找到为什么我不能从java在PhantomJS中运行JS的方法。我通过如下设置窗口大小来接收延迟加载元素:driver.manage().window().setSize(新维度(40005000));在那之后。睡眠(1000)和我得到了所有的解决方案都是好的,除了坏的,就像我们在瑞典语中说的