Alert PageObject Gem-未处理警报弹出窗口
我不熟悉PageObject(和ruby) 当未提供用户ID时,我在处理警报弹出窗口时遇到问题 以下是代码和场景: 当我在没有用户ID的情况下单击“登录”按钮时,我希望收到一条带有消息的警报,我正在脚本中验证消息 当前我收到一个错误:Alert PageObject Gem-未处理警报弹出窗口,alert,pageobjects,page-object-gem,Alert,Pageobjects,Page Object Gem,我不熟悉PageObject(和ruby) 当未提供用户ID时,我在处理警报弹出窗口时遇到问题 以下是代码和场景: 当我在没有用户ID的情况下单击“登录”按钮时,我希望收到一条带有消息的警报,我正在脚本中验证消息 当前我收到一个错误: NoMethodError:undefined方法alert'用于nil:NilClass` 然后声明: 然后我会看到一条弹出消息“输入卡号” 步骤定义: ` ` …最新信息…进度 @约翰逊:谢谢……现在我发现了一个错误: Selenium::WebDriver:
NoMethodError:undefined方法
alert'用于nil:NilClass`
然后声明:
然后我会看到一条弹出消息“输入卡号”
步骤定义:
`
`
…最新信息…进度
@约翰逊:谢谢……现在我发现了一个错误:
Selenium::WebDriver::Error::UnhandledAlertError: Modal dialog present: "enter card number. "
我可以看到PageObject正在处理弹出窗口。我的新代码如下:
def alert_msg
alert do
self.sign_in.click
end
@alert_msg
end
在验证消息之前,我在步骤中的步骤定义中调用此函数,因此
When(***without a card number$/) do
on(HomePage).click_login
on(LoginPage).login_to_nectar('', FigNewton.collector.password)
@current_page.**alert_msg**
end
Then***
on(LoginPage).**alert_msg**.should == popup_msg
end
错误消息
NoMethodError:nil:NilClass的未定义方法“alert”表示您的@curr\u页面
为nil,因此没有定义的“alert”方法。看看您在哪里定义这个实例变量。这就是罪魁祸首。在我做了最初的更改之后,我得到了与模态相关的错误。我意识到在我的页面类中,我的login\u to\u nectar方法调用了'sign\u in'元素,所以实际上这被调用了两次(第二次是在alert\u msg方法中)。我把它从“登录”到“花蜜”的方法中去掉,一切都成功了。谢谢..Johnson谢谢你给我指出了正确的方向…但是现在我得到了以下错误:问题现在得到回答了吗?我不清楚状态是什么。是的,是…在我做了最初的更改之后,得到了与模态相关的错误。我意识到在我的页面类中,我的login\u to\u nectar方法调用了'sign\u in'元素,所以实际上这被调用了两次(第二次是在alert\u msg方法中)。我把它从“登录到花蜜”的方法中去掉,所有的方法都奏效了。如果下面的其他答案都不合适,也许可以把你刚才说的写在一个答案中,然后接受它。这有助于前来查看您的问题的其他人。
When(***without a card number$/) do
on(HomePage).click_login
on(LoginPage).login_to_nectar('', FigNewton.collector.password)
@current_page.**alert_msg**
end
Then***
on(LoginPage).**alert_msg**.should == popup_msg
end