Internet explorer 如何使用Internet Explorer运行Behat?
我已经花了很多时间寻找解决方案,似乎这应该是可能的,但我一直无法找到一个办法 我让它在yml中使用以下配置运行chrome,没有问题: 行为Internet explorer 如何使用Internet Explorer运行Behat?,internet-explorer,symfony,behat,mink,Internet Explorer,Symfony,Behat,Mink,我已经花了很多时间寻找解决方案,似乎这应该是可能的,但我一直无法找到一个办法 我让它在yml中使用以下配置运行chrome,没有问题: 行为 default: paths: features: features bootstrap: %behat.paths.features%/bootstrap context: parameters: browser: chrome javascript_session: webdriver ext
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改为IE浏览器和其他变体,但没有任何乐趣。
我确实让IE驱动程序服务器运行,但它似乎没有什么不同。我现在让它工作了!
对于遇到同样问题并偶然发现问题的人,以下是需要注意的事项:
启动selenium服务器时,请使用:
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
然后将每个文件夹(文件夹0除外)中的2500值修改为0。
我现在应该跑了 我现在让它工作了!
对于遇到同样问题并偶然发现问题的人,以下是需要注意的事项:
启动selenium服务器时,请使用:
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
然后将每个文件夹(文件夹0除外)中的2500值修改为0。
我现在应该跑了 更新
上述答案对我来说并不适用。首先,我不得不将selenium driver从3.8.0降级到3.4.0(3.8.0测试在预期通过时会失败,找不到元素,甚至找不到非常基本的测试),降级到3.4.0解决了这一问题。下面是一个对我有用的设置的详细说明。你的可能略有不同,但这应该有助于一些人
在此版本的selenium驱动程序(3.4.0)中,您可能需要在behat.yml的浏览器功能部分指定“木偶网”:true,否则将加载firefox而不是Internet Explorer
下面是使用最新版本的selenium和behat为selenium/behat设置Internet Explorer 11的详细说明
composer.json类似于:
{
"name": "test",
"description": "Joe applications",
"type": "project",
"authors": [
{
"name": "Joseph Olstad",
"email": "spam@lol.biz"
}
],
"require-dev": {
"behat/behat": "^3.2.3",
},
"require": {
"lakion/mink-debug-extension": "^1.2",
"behat/mink-selenium2-driver": "^1.1"
}
}
行为如下:
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/debug-ie11,在Linux-php环境中运行behat,如果在windows上,您必须更改它。为了使测试尽可能以最简单的方式运行,我最终在安装了IEDriverServer.exe的同一个windows 7 virtualbox上直接运行了behat,并在与behat相同的windows 7 virtualbox上运行了selenium standalone。
PHP7.0.x和PHP5.6.x都可以运行behat
将192.168.99.1更改为安装了internet explorer和驱动程序的selenium服务器的地址。
Windows 7 32位安装程序:
使用selenium 3.4.0
32位windows 7上的32位IEDriverServer.exe(3.4.0)
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
根据SeleniumHQ wiki for Internet Explorer 11的文档,在IE11中将视图设置为100%。
为了调试并弄清楚发生了什么,我最终使用调试技术将变量转储到文本文件中,方法是将其放入Selenium2Driver.php
然而,真正解决这个问题的木偶选项才是真正的关键,在安装Internet Explorer和驱动程序的过程中有很多乐趣。可以使用selenium的web界面进行调试,一旦工作正常,就必须在behat.yml、mink selenium2驱动程序和selenium之间工作。
现在我进入下一步,那就是找到一种方法让Internet Explorer忽略我们在测试环境中使用的无效https证书
我为此配置运行以下行为(从另一台计算机,而不是windows):
然而,我遇到了另一个障碍,IEDriverServer崩溃了,在调试之后,我认为它是在删除所有cookie时崩溃的
因此,为了防止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');
有关更多详细信息,请参阅此线程
另请参见此线程:
我还卸载了一系列windows 7更新,卸载了一系列windows 7安全更新,还卸载了一个service pack,不确定这是否也有帮助,因为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());
+ }
}
现在,您应该能够像我一样使其正常工作。更新了
上述答案对我来说并不适用。首先,我不得不将selenium driver从3.8.0降级到3.4.0(3.8.0测试在预期通过时会失败,找不到元素,甚至找不到非常基本的测试),降级到3.4.0解决了这一问题。下面是一个对我有用的设置的详细说明。你的可能略有不同,但这应该有助于一些人
在此版本的selenium驱动程序(3.4.0)中,您可能需要在behat.yml的浏览器功能部分指定“木偶网”:true,否则将加载firefox而不是Internet Explorer
下面是使用最新版本的selenium和behat为selenium/behat设置Internet Explorer 11的详细说明
composer.json类似于:
{
"name": "test",
"description": "Joe applications",
"type": "project",
"authors": [
{
"name": "Joseph Olstad",
"email": "spam@lol.biz"
}
],
"require-dev": {
"behat/behat": "^3.2.3",
},
"require": {
"lakion/mink-debug-extension": "^1.2",
"behat/mink-selenium2-driver": "^1.1"
}
}
行为如下:
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/debug-ie11,在Linux-php环境中运行behat,