如何以编程方式按JS警报中的“确定”按钮?
我想做什么:每次创建提醒后,都会按下确定按钮。
这是使用Selenium RC的UI测试。
另外,我已经检查过:Click in OK button inside an Alert (Selenium IDE)。
编辑:我已经使用chooseOkOnNextConfirmation()
并在点击生成警报的按钮之前放置它。我也试过把它放在后面。什么都没有用!
答案 0 :(得分:0)
你做不到。除非你使用可以控制浏览器的东西(例如selenium)。
答案 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。
也就是说,您可以使用Robot
或selenium.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上提交它)。