PHP WebDriver + Selenium + chromedriver无法从配置文件加载Cookie

时间:2018-10-10 16:37:22

标签: php selenium google-chrome cookies webdriver

我有

openjdk version "1.8.0_181"
ChromeDriver 2.42.591071
Google Chrome 69.0.3497.100
Selenium build info: version: '3.14.0'

并且我正在使用当前代码段进行测试:

<?php

namespace Facebook\WebDriver;

use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Chrome\ChromeOptions;
ini_set("display_errors", "on");
error_reporting(E_ALL);
require_once('vendor/autoload.php');

// start Chrome with 5 second timeout
$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::chrome();
$options = new ChromeOptions();
$options->addArguments(array(
      '--headless',
      '--no-sandbox',
      '--window-size=1920,1080',
      'user-data-dir=/usr/share/nginx/html/browser/tmp/profile',
    ));
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = RemoteWebDriver::create($host, $capabilities, 5000);

$driver->get('http://example.com/browser/cookies.php');

$driver->takeScreenshot('/usr/share/nginx/html/browser/tmp/screen.png');

// close the browser
$driver->quit();
echo "<img src='tmp/screen.png' />";

cookies.php中的代码是:

<?php
if(isset($_COOKIE['test'])){
    echo "It is set";
}else{
    setcookie("test", "testCookie");
    echo "Setting it ...";
}

我希望该Cookie在第二次访问时可以重复使用,因此无论请求多少次,我都会得到“已设置”,而我却得到了“设置...”。 / p>

我检查了配置文件的路径,它已成功创建。

我也在浏览器中尝试了该页面,该页面正常工作,所以我在这里缺少什么?

谢谢

1 个答案:

答案 0 :(得分:1)

您的浏览器是从头开始运行的。您知道$ _COOKIE存储在浏览器中。因此,除非您在退出时保存cookie并在启动时加载,否则您就无法到达。

在以下位置查看示例:Laravel Dusk - Reuse browser with its session and cookies

也不要在初始导航之前预加载Cookie。那不行首先,您应该导航到url,然后加载cookie。然后重新加载页面。您将看到第二个页面加载将包含cookie。