Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
使用Selenium Facebook PHP Webdriver在chrome中打开新选项卡_Php_Selenium_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

使用Selenium Facebook PHP Webdriver在chrome中打开新选项卡

使用Selenium Facebook PHP Webdriver在chrome中打开新选项卡,php,selenium,selenium-webdriver,selenium-chromedriver,Php,Selenium,Selenium Webdriver,Selenium Chromedriver,因此,使用Facebook的PHP Webdriver()的基本spiel“我对这个东西很陌生”称为Selenium,我找不到任何与使用这种特殊技术的“如何在chrome中打开新标签”匹配的东西。任何帮助都将不胜感激 给你一杯虚拟咖啡,善良的程序员 像这样的方法应该会奏效: $driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome()); $driver->get('http://mine.com'); //

因此,使用Facebook的PHP Webdriver()的基本spiel“我对这个东西很陌生”称为Selenium,我找不到任何与使用这种特殊技术的“如何在chrome中打开新标签”匹配的东西。任何帮助都将不胜感激


给你一杯虚拟咖啡,善良的程序员

像这样的方法应该会奏效:

$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());
$driver->get('http://mine.com');

// Via driver: http://facebook.github.io/php-webdriver/classes/RemoteWebDriver.html#property_keyboard

$kbd = $driver->getKeyboard();
$kbd->sendKeys(WebDriverKeys.CONTROL,'t');

// Via an element: http://facebook.github.io/php-webdriver/classes/WebDriverElement.html#method_sendKeys

$element = $driver->findElement(WebDriverBy::id('somethingOnScreen'));
$element->sendKeys(WebDriverKeys.CONTROL,'t');

您可以使用JS解决方案,如:

$webdriver->executeScript(“window.open”(“$url.”,“\u blank”);”,array();

自php webdriver 1.10.0以来的新方法:

//默认行为,不指定窗口类型
$driver->switchTo()->newWindow();
//打开新窗口
$driver->switchTo()->newWindow(WebDriverTargetLocator::WINDOW\u TYPE\u WINDOW);
//打开新选项卡
$driver->switchTo()->newWindow(WebDriverTargetLocator::WINDOW\u TYPE\u选项卡);
$driver->switchTo()->window($driver->getWindowHandles()[1]);

有关更多示例,请参见。

谢谢您的回答,但不,它不起作用。仍然会打开一个新窗口,而不是新选项卡。我有这些:
$host=http://localhost:4444/wd/hub';            $driver=RemoteWebDriver::create($host,DesiredCapabilities::chrome())$驱动程序->获取($url)$kbd=$driver->getKeyboard()$kbd->sendKeys(WebDriverKeys.CONTROL,'t')$uname=$driver->findElement(WebDriverBy::xpath('/html/body/div[5]/div/div[1]/div[2]/div/form/input[1]')
只是为了澄清一下:
get
调用创建了一个窗口,Ctrl-T创建了另一个窗口(也就是说,它确实做了些什么)?我需要检查一下你看到了什么,因为人们普遍认为Ctrl-T(或Mac的Cmd-T)会打开一个新的选项卡,如果它能工作的话,请参阅:Hey there@Andrew。即使省略sendkeys部分,也会打开新窗口。然而,打开一个新标签根本不起作用。是的,我看过你昨天提到的消息来源。无论如何,谢谢你的帮助,真的很感激!我的实际问题是,我有这个客户机-服务器设置,当我从客户机启动一个自动化站点时,新窗口在服务器上打开,而不是在客户机上打开。你对这些有什么建议吗?我正在努力理解硒的网格。我走对了吗?事实上,这是唯一对我有效的答案
$driver->getKeyboard()->sendKeys(
  array(WebDriverKeys::CONTROL, 't'),
);