使用 behat 和 mink PHP 检测新标签页是否打开

chi*_*nds 2 php bdd behat mink browserstack

我有一个 behat 测试,它单击一个按钮,通常会在新选项卡中打开一个 url。

我可以测试单击按钮后是否打开了一个新选项卡?

这是小黄瓜:

Scenario: Open document in a new tab
    Given I am a "Project Admin" for project "x"
    And   Project "x" has document type "orbitron" with editor "none"
    And   I create a new orbeon form "orbitron" for project "x" from fixture "OrbitronFilePicker.xhtml"
    Then  I visit the orbeon new content form for document type "orbitron" in project "x"
    And   I can see the "file-picker" control
    When  I enter a valid file picker reference "urn:isite:x:mickeyMouse"
    Then  I can see the card with "mickeyMouse" header
    When  I click "Open In New Tab" in the Dropdown Action Menu for "#section-1-control?xf-383"
    Then  The document should open in a new tab
Run Code Online (Sandbox Code Playgroud)

Igo*_*nko 5

你可以尝试这样的事情:

/**
 * @When /^The document should open in a new tab$/
 */    
public function documentShouldOpenInNewTab()
{
    $session     = $this->getSession();
    $windowNames = $session->getWindowNames();
    if(sizeof($windowNames) < 2){
        throw new \ErrorException("Expected to see at least 2 windows opened"); 
    }

    //You can even switch to that window
    $session->switchToWindow($windowNames[1]);
}
Run Code Online (Sandbox Code Playgroud)

注意:窗口可能会延迟打开,在这种情况下,您需要等待:

    $ttw     = 40;
    while ((sizeof($session->getWindowNames()) < 2 && $ttw > 0) == true) {
        $session->wait(1000);
        $ttw--;
    }
Run Code Online (Sandbox Code Playgroud)