使用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是否停止加载吗?我正试图通过