如何以编程方式按警报确定按钮?

时间:2012-05-25 07:04:30

标签: testing selenium selenium-rc alert

如何以编程方式按JS警报中的“确定”按钮?

我想做什么:每次创建提醒后,都会按下确定按钮。

这是使用Selenium RC的UI测试。

另外,我已经检查过:Click in OK button inside an Alert (Selenium IDE)

编辑:我已经使用chooseOkOnNextConfirmation()并在点击生成警报的按钮之前放置它。我也试过把它放在后面。什么都没有用!

8 个答案:

答案 0 :(得分:0)

你做不到。除非你使用可以控制浏览器的东西(例如selenium)。

如果您使用硒,请查看Click in OK button inside an Alert (Selenium IDE)

答案 1 :(得分:0)

如果您可以模拟空格键的按键或输入键,那么这将取消警报。但是你最好从外面做这件事,因为它们首先会出现警报,因为它们往往会阻塞。

如果这是JavaScript,您可能最好使用console.log()

答案 2 :(得分:0)

如果您实际上可以看到警告对话框,则无法完成。 Selenium应该为你处理它。但是,as stated in Selenium documentation

  

Selenium试图隐藏你的那些对话(通过替换   window.alert,window.confirm和window.prompt)所以他们不会停止   执行您的页面。如果你看到一个警告弹出窗口,那就是   可能是因为它在页面加载过程中被触发,这是   通常为时太早,我们无法保护页面。

这是Selenium RC的一个已知限制(因此也是Selenium IDE),也是Selenium 2(WebDriver)开发的原因之一。如果您想抓住onload JS提醒,则需要to use WebDriver alert handling

也就是说,您可以使用Robotselenium.keyPressNative()填写任何文字,然后按 Enter 并盲目确认对话框。这不是最干净的方式,但它可以工作。但是,您将无法收到alert消息。

Robot将所有有用的键映射到常量,这样很容易。使用keyPressNative(),您希望使用10作为按 Enter 27 Esc 的值,因为它适用于{{3} }}

答案 3 :(得分:0)

使用chooseOkOnNextConfirmation可以做到这一点。

selenium.chooseOkOnNextConfirmation();  // prepares Selenium to handle next alert
selenium.click(locator);
String alertText = selenium.getAlert(); // verifies that alert was shown
assertEquals("This is a popup window", alertText);

有关详细信息,请浏览此链接link

答案 4 :(得分:0)

selenium.chooseOkOnNextConfirmation();我在Selenium RC工作。

我们必须对Alert OK按钮的代码进行注释,然后它才能正常工作。

答案 5 :(得分:0)

$this->chooseOkOnNextConfirmation();
$this->click('locator');
$this->getConfirmation();

上面的过程适用于我使用Selenium RC和PHPUnit

答案 6 :(得分:0)

Swift 3

您想在show alert和ok和取消按钮

中尝试此代码
let sharephotoAction = UIAlertController.init(title: "Confirm Ticket", message:"Please Collect Your Ticket Before 1 Hours Ago in Location", preferredStyle: .alert )
        sharephotoAction.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (alertAction) in

            _ = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(self.Save), userInfo: nil, repeats: false)

        }))
        sharephotoAction.addAction(UIAlertAction(title: "Cancle", style: .default, handler:nil))

        self.present(sharephotoAction, animated: true, completion:nil)

答案 7 :(得分:-1)

您可以使用GSEvent.h来处理任何类型的按键事件,它可以在GraphicsServices框架中使用,它是私有的framewrk(因此,您无法在appstore上提交它)。