PhantomJS无法从Java运行JS:拒绝将字符串计算为JavaScript

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

您好,我正在做一个学校项目,使用PhantomJS.exe(PhantomJS-2.1.1)和selenium(selenium-server-standalone-3.7.1.jar驱动程序)在windows上迭代LinkedIn中的所有用户数据

我发现在LinkedIn中有很多延迟加载的元素,因此我需要在PhantomJS浏览器中执行javascript,向下滚动最后加载的元素以加载所有元素并获取所有数据

获取特定LinkedIn用户的URL后,如下所示:

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)和我得到了所有的解决方案都是好的,除了坏的,就像我们在瑞典语中说的