在我的测试中,我使用此步骤确认javascript确认弹出窗口:
/**
* @when /^(?:|I )confirm the popup$/
*/
public function confirmPopup()
{
$this->getSession()->getDriver()->getWebDriverSession()->accept_alert();
}
此步骤适用于selenium2和chrome / firefox,但不适用于 phantomjs 。
如何使用phantomjs处理确认弹出窗口?
获取信息:
behat.yml
default:
extensions:
Behat\Symfony2Extension\Extension:
mink_driver: true
Behat\MinkExtension\Extension:
base_url: "http://localhost:8000/app_test.php"
default_session: selenium2
selenium2:
wd_host: "http://localhost:9876/wd/hub"
谢谢!
答案 0 :(得分:0)
我更新了我的" Selenium2Driver.php"以下内容:
public function acceptAlert()
{
$this->wdSession->accept_alert();
}
这使得accept_alert()可用于驱动程序。
因此,在脚本中,您可以执行此操作以接受警报。
$这 - >的getSession() - > getDriver() - > acceptAlert();
请注意,我使用RawMinkContext而不是本机MinkContext
答案 1 :(得分:0)
void bitcheck()
{
int i;
for(i=0;i<NELEMS(array); i++)
{
delay();
AP_CMU->DIVIDER = freq_def[0];
encryption(array,i);
delay();
// LCD_DisplayUint32(i,0,array[i]);
AP_CMU->DIVIDER = freq_def[6];
delay_ex(10);
decryption(intr_array,i);
delay_ex(10);
// LCD_DisplayUint32(i,10,array[i]);
}
}
void delay()
{
int i;
for (i = 0; i < 100000; i++) {
__NOP();
}
}
void delay_ex(int j)
{
for(int s=0; s < j; s++)
{
for ( int i = 0; i < 10000; i++) {
__NOP();
}
}
}
是一个无头浏览器,因此所有对话框都不显示,无法与之交互。解决方案是使用您自己的返回预定义值的函数重写phantomjs
和widnow.confirm
。
由于场景在同一个驱动程序中运行,因此使用预定义的返回值覆盖本机方法是完全安全的(您不会遇到需要在同一场景中看到窗口的情况)。此外,在单个场景中多次调用这些步骤定义以翻转返回值是安全的。
window.alert
场景示例:
/**
* @When I accept confirmation dialogs
*/
public function acceptConfirmation() {
$this->getSession()->getDriver()->executeScript('window.confirm = function(){return true;}');
}
/**
* @When I do not accept confirmation dialogs
*/
public function acceptNotConfirmation() {
$this->getSession()->getDriver()->executeScript('window.confirm = function(){return false;}');
}