Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Facebook PHP WebDriver在Selenium中执行javascript_Php_Facebook_Selenium_Facebook Php Webdriver - Fatal编程技术网

使用Facebook PHP WebDriver在Selenium中执行javascript

使用Facebook PHP WebDriver在Selenium中执行javascript,php,facebook,selenium,facebook-php-webdriver,Php,Facebook,Selenium,Facebook Php Webdriver,我正试图执行一个脚本,但得到的只是一个错误,即executeScript方法未定义 $this->driver->navigateTo('/'); $this->driver->clickElement('#member_opt_in + label'); $this->driver->executeScript("alert('Hi');"); 文档使用了$session,并在页面上方指出这是一种速记,但根本没有解释$session实际包含的内容或如何分配

我正试图执行一个脚本,但得到的只是一个错误,即
executeScript
方法未定义

$this->driver->navigateTo('/');
$this->driver->clickElement('#member_opt_in + label');
$this->driver->executeScript("alert('Hi');");
文档使用了
$session
,并在页面上方指出这是一种速记,但根本没有解释
$session
实际包含的内容或如何分配它。

GitHub上的php webdriver库不是当前php webdriver库的最新版本,并参考了以前的版本(2013年以前)它的版本-但从那时起,该库被从头重写

要执行Selenium命令,您需要
RemoteWebDriver
的实例。可以在中看到一个例子

使用
$driver
变量中的
RemoteWebDriver
实例,您可以执行:

$driver->get('http://google.com');

$element = $driver->findElement(WebDriverBy::cssSelector('#member_opt_in + label'));
$elemen->click();

// Execute javascript:
$driver->executeScript('alert("Hi");');
// Or to execute the javascript as non-blocking, ie. asynchronously:
$driver->executeAsyncScript('alert("Hi");');
有关更多信息,请参阅。

GitHub上的php webdriver库不是当前php webdriver库的最新版本,并参考了它的早期(2013年之前)版本,但该库自那时起被从头重写

要执行Selenium命令,您需要
RemoteWebDriver
的实例。可以在中看到一个例子

使用
$driver
变量中的
RemoteWebDriver
实例,您可以执行:

$driver->get('http://google.com');

$element = $driver->findElement(WebDriverBy::cssSelector('#member_opt_in + label'));
$elemen->click();

// Execute javascript:
$driver->executeScript('alert("Hi");');
// Or to execute the javascript as non-blocking, ie. asynchronously:
$driver->executeAsyncScript('alert("Hi");');

有关更多信息,请参阅。

有关使用Laravel Dask的用户(在我的例子中,我想单击Facebook模式来测试通过社交网站进行的联合登录):

这似乎迫使点击,尽管之前的黄昏截图显示一个黑色(大部分为黑色)半透明层在整个屏幕上悬停,阻止任何点击(即使在正常的非黄昏尝试中,浏览器中的一切看起来都很好)

另见:


另外,我后来还意识到,Facebook模式在膨胀/出现时有一个奇特的渐变,因此似乎
$browser->waitFor('.layerConfirm',4)
提前启动,所以我想我可以用
暂停(2000)
强制它等待整整2秒,以完成过渡(然后根本不需要使用
executeScript
)。但再多的停顿也不会让模式变得完全可见和可点击。

对于使用Laravel Dask的人(在我的例子中,我想点击Facebook模式来测试通过社交名流进行的联合登录):

这似乎迫使点击,尽管之前的黄昏截图显示一个黑色(大部分为黑色)半透明层在整个屏幕上悬停,阻止任何点击(即使在正常的非黄昏尝试中,浏览器中的一切看起来都很好)

另见:


另外,我后来还意识到,Facebook模式在膨胀/出现时有一个奇特的渐变,因此似乎
$browser->waitFor('.layerConfirm',4)
提前启动,所以我想我可以用
暂停(2000)
强制它等待整整2秒,以完成过渡(这样就根本不需要使用
executeScript
)。但再多的停顿也不会让模式变得完全可见和可点击。

您使用的是哪种浏览器?可能是浏览器端出现故障您使用的是哪种浏览器?可能是浏览器端出现故障需要哪种版本?@AndrewVakhniuk任何1.0.0+,但为什么不试试最新的一款-1.6.0。非常好的解释Ondrej我也关注了你在github上的一些评论,你认为我们可以使用executeAsyncScript来判断Ajax是否停止加载?我正试图通过哪个版本来判断需要哪个版本?@AndrewVakhniuk任何1.0.0+,但为什么不试试最新的版本-1.6.0。很好的解释Ondrej和我关注了你在gi上的一些评论thub同样,您认为我们可以使用executeAsyncScript来确定Ajax是否停止加载吗?我正试图通过