2014-01-07 72 views
0

我花了很多時間尋找解決方案,看起來應該是可能的,但是至今我一直無法找到方法。如何使用Internet Explorer運行Behat?

我有它使用陽明以下配置運行Chrome不會有問題:

behat.yml

default: 
    paths: 
    features: features 
    bootstrap: %behat.paths.features%/bootstrap 
    context: 
    parameters: 
     browser: chrome 
     javascript_session: webdriver 
    extensions: 
    Behat\MinkExtension\Extension: 
     browser_name: chrome 
     goutte: ~ 
     selenium2: ~ 

和下面我試圖改變相同的邏輯在那裏說Chrome瀏覽器的Internet Explorer ,IE和其他變化,但沒有喜悅。 我確實有IE驅動程序服務器正在運行,但它似乎沒有任何區別。

+0

當您使用IE運行測試時,您是否收到任何錯誤消息? – sebbo

+0

我收到一個錯誤「無法打開連接」,但它仍然繼續運行,就好像測試正在運行一樣(全部失敗)。 – MikeCon94

+0

「無法打開連接」就是一切?沒有堆棧跟蹤或其他什麼? – sebbo

回答

3

我現在有工作! 誰的人得到了同樣的問題,跨這裏的問題跌跌是看出來了什麼: 當啓動硒服務器使用:

java -jar C:\xampp\htdocs\selenium-server-standalone-2.39.0.jar -Dwebdriver.ie.driver=Drivers\IEDriverServer.exe 

在behat.yml文件我有:

default: 
    paths: 
    features: features 
    bootstrap: %behat.paths.features%/bootstrap 
    context: 
    parameters: 
     browser: ie 
     javascript_session: webdriver 
    extensions: 
    Behat\MinkExtension\Extension: 
     browser_name: ie 
     goutte: ~ 
     selenium2: ~ 

如果仍未運行,請確保所有區域的保護模式都處於相同的設置(啓用或禁用但無關緊要,但必須相同)。 您可以通過改變值用regedit做到這一點:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones 

然後修改2500值在每個文件夾中(除了文件夾0)0 IE現在應該跑!

1

修訂 以上回答沒有爲我工作。首先,我必須從3.8.0降級到3.4.0(3.8.0測試會在預期通過時失敗,找不到元素或者甚至是非常基本的測試)降級到3.4.0來解決這個問題。以下是對我有用的設置的詳細說明。你的可能會略有不同,但這應該有助於某些人。

在這個版本的selenium驅動程序(3.4.0)中,您可能需要在behat.yml的瀏覽器功能部分指定「marionette」:true,否則firefox將加載而不是Internet Explorer。

這裏是使用硒和behat的最新版本的硒/ behat的Internet Explorer 11設置的詳細說明。

composer.json類似:

{ 
    "name": "test", 
    "description": "Joe applications", 
    "type": "project", 
    "authors": [ 
     { 
      "name": "Joseph Olstad", 
      "email": "[email protected]" 
     } 
    ], 
    "require-dev": { 
     "behat/behat": "^3.2.3", 
    }, 
    "require": { 
     "lakion/mink-debug-extension": "^1.2", 
     "behat/mink-selenium2-driver": "^1.1" 
    } 
} 

behat.yml如下:

seleniuminternetexplorer: 
    suites: 
    default: 
     contexts: 
     - FeatureContext: 
      parameters: 
       base_url: "https://google.com" 
    extensions: 
    Behat\MinkExtension: 
     default_session: selenium2 
     base_url: "https://google.com" 
     goutte: ~ 
     selenium2: ~ 
     javascript_session: selenium2 
     browser_name: "internet explorer" 
     selenium2: 
     browser: "internet explorer" 
     wd_host: http://192.168.99.1:4444/wd/hub 
     capabilities: {"browser": "internet explorer", "version": "11", "marionette": true} 
     sessions: 
     my_session: 
      selenium2: 
       wd_host: http://192.168.99.1:4444/wd/hub 
       browser: "internet explorer" 
       capabilities: {"browser": "internet explorer", "version": "11", "marionette": true} 
    Lakion\Behat\MinkDebugExtension: 
     directory: /tmp/debug-ie11 

的/ tmp /調試IE11,從Linux PHP環境中運行貝哈特,如果你的窗口」 d必須改變這一點。爲了使測試能夠以最簡單的方式運行,我最終直接在與安裝IEDriverServer.exe相同的Windows 7虛擬機上運行behat,並在與behat相同的Windows 7 virtualbox上運行了selenium standalone。

PHP 7.0.x和PHP 5.6.x應該可以運行behat。

改變192.168.99。1添加到設置了Internet Explorer和驅動程序的硒服務器的地址。

Windows 7的32位設置:使用硒3.4.0 32位IEDriverServer.exe(3.4.0

在32位Windows 7

java -Dwebdriver.ie.driver=C:/windows/IEDriverServer.exe -Dwebdriver.ie.driver.host=127.0.0.1 -Dwebdriver.ie.driver.whitelisted-ips=192.168.99.1,127.0.0.1 -Dwebdriver.ie.driver.loglevel=DEBUG -Dwebdriver.ie.driver.logfile="C:/temp/ie_selenium.log" -jar selenium-server-standalone-3.4.0.jar 

我使用的Java版本「1.8 .0_121「

在Windows PowerShell中,您必須設置Internet Explorer註冊表項,如下所示。

New-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\0" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\1" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\2" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\3" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\4" -Name "2500" -Value 0 -PropertyType DWORD -Force 

良好的措施,辦HKLM還有:

New-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\0" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\1" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\2" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\3" -Name "2500" -Value 0 -PropertyType DWORD -Force 
New-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\internet settings\zones\4" -Name "2500" -Value 0 -PropertyType DWORD -Force 

設置在IE11中以100%的基礎上,從資料維基SeleniumHQ的Internet Explorer 11 https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

到調試並找出發生了什麼我最終使用調試技術將變量轉儲到文本文件中,將其放入Selenium2Driver.php 中,但實際上修復此問題的牽線木偶選項是這是真正的關鍵,在獲得Internet Explorer和驅動程序的方式上有很多樂趣。可以使用硒的Web界面進行調試,一旦你有這個工作,那麼它是在你的behat.yml,貂selenium2驅動程序和硒,你必須工作。 現在我正在進入下一步,即找到一種方法讓Internet Explorer忽略我們在測試環境中使用的無效https證書。

我跑貝哈特了該配置(而不是Windows從另一臺機器),如下所示:

behat -p seleniuminternetexplorer 

不過,我遇到了另一個障礙,在IEDriverServer墜毀,調試完畢後,琢磨它是拍擊刪除所有的cookies。

所以爲了防止IEDriverServer.exe崩潰並讓IE11與seleniun一起使用,我必須禁用從這部分php-webdriver中刪除所有cookie: instaclick/php-webdriver/lib/WebDriver/Session。 PHP

/** 
* Delete all cookies: /session/:sessionId/cookie (DELETE) 
* 
* @return \WebDriver\Session 
*/ 
public function deleteAllCookies() 
{ 
    //$this->curl('DELETE', '/cookie'); 

    return $this; 
} 

所以一定要註釋掉/禁用此行

//$this->curl('DELETE', '/cookie'); 

看到這個線程的更多細節。 https://github.com/SeleniumHQ/selenium/issues/5054

也看到這個線程: https://groups.google.com/forum/#!topic/selenium-users/Beu-7QFMizk

我也結束了卸載一堆的Windows 7的更新和卸載一堆的Windows 7安全更新,並卸載服務包,不知道那是什麼也因爲3.8.0版仍然不適合我,但降級到3.4.0似乎已經解決了現在的問題。

,如果你需要一個解決方案,以繞開IE11自簽名證書警告使用自簽名證書爲不同的域或網站域名:

diff --git a/behat/features/bootstrap/FeatureContext.php b/behat/features /bootstrap/FeatureContext.php 
index 99511e8..7f50579 100644 
--- a/behat/features/bootstrap/FeatureContext.php 
+++ b/behat/features/bootstrap/FeatureContext.php 
@@ -324,6 +324,13 @@ class FeatureContext extends RawMinkContext implements Context, SnippetAccepting 
     $findName->click(); 
     } 
    } 
+ 
+ public function imgoingtosaythis($what_im_sayin) { 
+ if ($fp = fopen('z_debug_saythis.txt', 'a')) { 
+  fwrite($fp, 'debug='.print_r($what_im_sayin, true) . "\n"); 
+  fclose($fp); 
+ } 
+ } 
    /** 
    * Opens homepage 
    * Example: Given I am on "/" */ 
@@ -336,6 +343,13 @@ class FeatureContext extends RawMinkContext implements Context, SnippetAccepting 
    public function iAmOnHomepage() 
    { 
     $this->visitPath('/'); 
+  try { 
+  //WORKAROUND FOR IE11 INCORRECT CERTIFICATE OR CERT WARNING SELF SIGNED INCORRECT DOMAIN 
+  $driver = $this->getSession()->getDriver(); 
+  $driver->executeScript("javascript:try {document.getElementById('overridelink').click();} catch (err) {console.log('probably cert warn already accepted');}"); 
+  } 
+  catch (Exception $e) { 
+  $this->imgoingtosaythis($e->getMessage()); 
+  } 
    } 
    /** 
    * Opens specified page 
@@ -349,6 +363,13 @@ class FeatureContext extends RawMinkContext implements Context, SnippetAccepting 
    public function visit($page) 
    { 
     $this->visitPath($page); 
+  try { 
+  //WORKAROUND FOR IE11 INCORRECT CERTIFICATE OR CERT WARNING SELF SIGNED INCORRECT DOMAIN 
+  $driver = $this->getSession()->getDriver(); 
+  $driver->executeScript("javascript:try {document.getElementById('overridelink').click();} catch (err) {console.log('probably cert warn already accepted');}"); 
+  } 
+  catch (Exception $e) { 
+  $this->imgoingtosaythis($e->getMessage()); 
+  } 
    } 

現在,你應該能夠得到這個工作作爲我有。

+0

而且,如果您必須在behat/selenium上使用IE11的自簽名證書 –

相關問題