2017-06-04 20 views
0

嘗試選中Behat/Mink/Selenium複選框時出現錯誤。以下是我的設置和我的錯誤的描述。Behat,水貂和硒。如何檢查複選框?

behat.yml

default: 
    extensions: 
     Behat\MinkExtension: 
      goutte: ~ 
      selenium2: ~ 

composer.json

{ 
    "require": { 
     "behat/behat": "~3.3", 
     "behat/mink-extension": "~2.2", 
     "behat/mink-goutte-driver": "~1.2", 
     "behat/mink-selenium2-driver": "~1.3" 
    }, 
    "config": { 
     "bin-dir": "bin/" 
    } 

}

我運行硒3.4.0這樣(包括壁虎駕駛員)

java -Dwebdriver.gecko.driver=/home/ubuntu/path/to/geckodriver -jar selenium-server-standalone-3.4.0.jar 

FeatureContext類別:

<?php 

use Behat\MinkExtension\Context\MinkContext; 
use Behat\Behat\Tester\Exception\PendingException; 

/** 
* Defines application features from the specific context. 
*/ 
class FeatureContext extends MinkContext 
{ 
} 

?> 

被測

Feature: Search 
    In order to use behat 
    As a tester 
    I need to be able to get all these componets to work! 

    @javascript 
    Scenario: A very simple test of behat functionality 
     Given I am on "http://behat-testing.christaylordeveloper.co.uk/" 
     Then I should see "MY BLOG" 
     And the "#slave-para" element should not contain "Hi there" 
     When I check "test-cb" 
     Then the "#slave-para" element should contain "Hi there" 

錯誤
這種情況的特點是測試的表示mouseMoveTo錯誤

輸出
[email protected]:~/behat-tests$ bin/behat 
Feature: Search 
    In order to use behat 
    As a tester 
    I need to be able to get all these componets to work! 

    @javascript 
    Scenario: A very simple test of behat functionality    # features/simple-test.feature:7 
    Given I am on "http://behat-testing.christaylordeveloper.co.uk/" # FeatureContext::visit() 
    Then I should see "MY BLOG"          # FeatureContext::assertPageContainsText() 
    And the "#slave-para" element should not contain "Hi there"  # FeatureContext::assertElementNotContains() 
    When I check "test-cb"           # FeatureContext::checkOption() 
     mouseMoveTo 
     Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' 
     System info: host: 'ip-172-31-7-6', ip: '172.31.7.6', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-1018-aws', java.version: '1.8.0_131' 
     Driver info: driver.version: RemoteWebDriver (WebDriver\Exception\UnknownCommand) 
    Then the "#slave-para" element should contain "Hi there"   # FeatureContext::assertElementContains() 

--- Failed scenarios: 

    features/simple-test.feature:7 

1 scenario (1 failed) 
5 steps (3 passed, 1 failed, 1 skipped) 
0m3.75s (10.46Mb) 

如果我註釋掉@javascript標記並註釋掉該場景的最後一步(涉及到javascript),它就會通過。

如何在沒有此mouseMoveTo錯誤的情況下使用javascript進行測試?

謝謝

更新數2:

我現在有這個使用chromedriver版本2.32和硒獨立服務器3.5.3

我從這樣的命令行中運行的服務器工作:

java -Dwebdriver.chrome.driver=chromedriver -jar selenium-server-standalone-3.5.3.jar 

我的behat。陽明海運是

default: 
    extensions: 
     Behat\MinkExtension: 
      goutte: ~ 
      selenium2: ~ 
      browser_name: 'chrome' 

回答

1

爲了檢查checbox MinkContext已經預定義了方法,如checkOption(optionName)uncheckOption(optionName) 文件說:

  • 檢查複選框與指定的ID |名稱|標籤|價值
    • 例如:當我檢查「珍珠項鍊」
    • 示例:我檢查 「珍珠項鍊」

由於這種方法是在MinkContext你可以從你.feature文件一樣使用它:

When I check "accept_checkbox" 

或者在你的FeatureContext.php文件中像

$this->checkOption('optionIdentifier') 

MinkContext鏈接有很多predefin編輯方法,檢查出來!

+0

謝謝伊戈爾。我已經爲我原來的問題添加了一個編輯。我有一種感覺,我的功能上下文類缺少一些必要的'use'語句,因爲我不能使用基本的預定義方法,比如'當我檢查'cb_id「',甚至像'當我按照'鏈接''。也許我錯過了什麼? – CTaylorGuitar

+0

@CTaylorGuitar很奇怪,因爲所有的圖書館都在,你可以用'behat -dl'運行behat。如果你嘗試在featureContext的方法中調用'$ this-> checkOption('optionIdentifier')',你會得到什麼類型的錯誤? –

+0

我已經編輯了原來的問題一次,現在我的情況和錯誤更清楚地解釋我希望。任何關於如何檢查與硒硒複選框感謝 – CTaylorGuitar

0

所以在更新問題後,問題變得清楚了。 mouseMoveTo錯誤是使用selenium3時衆所周知的問題。此錯誤僅適用於firefox瀏覽器,驅動程序爲gecko。要解決此問題,您可以使用chrome或更新MinkSelenium2Driver庫。應該是master分支MinkSelenium2Driver,這需要behat/mink: [email protected]。這裏的問題是MinkSelenium2Driver 因此,如果其確定你使用的所有最新版本貝哈特,然後composer.json可能看起來像這樣的觀點:

"require": { 
    "behat/behat": "v3.3.1", 
    "behat/mink": "v1.7.1", 
    "behat/mink-extension": "v2.2", 
    "behat/mink-selenium2-driver": "dev-master", 

}

+0

謝謝非常。我會測試這個,並儘快回覆您 – CTaylorGuitar

+0

好吧,所以我先嚐試了Chrome選項。我需要從壁虎切換到鉻驅動程序,一切似乎進展順利。但是,我得到了「您正在使用不受支持的命令行標誌--ignore-certificate-errors」錯誤消息。我無法找到一種直接的處理方式。如果我可以修復這個鉻錯誤,那麼Chrome瀏覽器確實會啓動,這似乎是一個好方法。然後我嘗試了新的作曲家文件(謝謝)。加載更多錯誤。愚蠢的問題:我是否需要更改我使用的硒單機服務器?也許切換到2.x版本以匹配作曲文件? – CTaylorGuitar

+0

關於鉻 - 奇怪我沒有得到這樣的錯誤,也許得到最新的鉻驅動程序版本。關於更新到最新版本我猜你在更新時遇到錯誤 - 如果是這樣 - 我會建議你做下一個:1)刪除/ vendor目錄下的所有文件2)清理composer.lock文件3)運行'composer update貝哈特/貂-selenium2-driver' –