Alert PageObject Gem-未处理警报弹出窗口

Alert PageObject Gem-未处理警报弹出窗口,alert,pageobjects,page-object-gem,Alert,Pageobjects,Page Object Gem,我不熟悉PageObject(和ruby) 当未提供用户ID时,我在处理警报弹出窗口时遇到问题 以下是代码和场景: 当我在没有用户ID的情况下单击“登录”按钮时,我希望收到一条带有消息的警报,我正在脚本中验证消息 当前我收到一个错误: NoMethodError:undefined方法alert'用于nil:NilClass` 然后声明: 然后我会看到一条弹出消息“输入卡号” 步骤定义: ` ` …最新信息…进度 @约翰逊:谢谢……现在我发现了一个错误: Selenium::WebDriver:

我不熟悉PageObject(和ruby)

当未提供用户ID时,我在处理警报弹出窗口时遇到问题

以下是代码和场景:

当我在没有用户ID的情况下单击“登录”按钮时,我希望收到一条带有消息的警报,我正在脚本中验证消息

当前我收到一个错误:
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