单击OK按钮,警报内(硒IDE)(Click in OK button inside an Aler

2019-06-21 06:22发布

我需要点击一个警告窗口中的“确定”按钮与硒的命令。 我试过assertAlertverifyAlert但他们没有做我想做的。

这是可能的点击“确定”按钮? 如果是这样,有人可以给我提供硒IDE命令的例子吗?

Answer 1:

尝试硒2.0b1。 它有不同的核心比第一个版本。 它应根据支持弹出对话框的文件 :

弹出对话框

硒2.0测试版1日开始,有内置的处理,弹出对话框的支持。 你已经触发,这将打开一个弹出操作后,您可以访问以下警告:

Java的

Alert alert = driver.switchTo().alert();

红宝石

driver.switch_to.alert

这将返回当前打开的警告对象。 有了这个对象,您现在可以接受,驳回,读它的内容,甚至键入一个提示。 这个接口同样适用于警告,确认,提示。 参考JavaDocs获取更多信息。



Answer 2:

点击在警告框中的“确定”按钮:

driver.switchTo().alert().accept();


Answer 3:

这是从2012年的答案,如果从2009年的问题,但人们仍然看它,只有一个正确的(使用WebDriver )和一个几乎有用的(但还不够好)的答案。


如果你正在使用Selenium RC和实际上可以看到一个警告对话框,那么就无法完成。 硒应该为您处理。 但是, 如硒文档中所述 :

硒试图从你(通过更换window.alert,window.confirm和window.prompt)隐瞒这些对话,使他们不会停止页面的执行。 如果你看到一个警告弹出,这可能是因为它在页面加载过程中,通常是太早了我们保护的页面被解雇。

这是硒RC(因此,硒IDE,太)和硒为什么2(webdriver的)被开发的原因之一的已知限制。 如果你要处理onload JS警报,您需要使用的webdriver 报警处理

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

Robot拥有所有映射到常量有用的按键,这样会很容易。 随着keyPressNative()要使用10作为值,按Enter键27Esc键 ,因为它的工作原理ASCII码 。



Answer 4:

1 | 打印警报弹出的文本和关闭-I

Alert alert = driver.switchTo().alert();
System.out.println(closeAlertAndGetItsText());

2 | 打印警报弹出的文本和关闭-II

Alert alert = driver.switchTo().alert();
System.out.println(alert.getText()); //Print Alert popup
alert.accept(); //Close Alert popup

3 | 断言警报弹出的文本和关闭

Alert alert = driver.switchTo().alert();
assertEquals("Expected Value", closeAlertAndGetItsText());


Answer 5:

如果您在使用硒IDE,那么你必须点击确定按钮手动,因为当警报消息命令运行时浏览器停止工作,如果你想点击OK按钮自动那么你必须使用硒RC或webdriver的和下面的命令是硒IDE

在硒IDE使用storeeval命令,不同类型的盒

    storeEval | alert("This is alert box")                           |
    storeEval | prompt("This is prompt box. Please enter the value") | text
    storeEval | confirm("this is cofirm box")   |


Answer 6:

你可能会考虑chooseOkOnNextConfirmation ,尽管这也许应该是默认的行为,如果我正确地阅读文档。



Answer 7:

现在的问题是不明确的 - 这是在网页加载时的警报? 使用Selenium时,您应该不会看到任何警告的对话,因为它取代了alert()有自己的版本,只捕获验证给出的消息。

硒不支持alert()在页面加载,因为它需要打补丁下有自己的版本测试窗口的功能。

如果你无法从应用测试下摆脱onload事件的警报,你应该考虑使用GUI自动化点击其中产生,例如弹出窗口AutoIt的 ,如果你使用的是Windows。



Answer 8:

使用报警接口,首先switchTo()提醒,然后要么使用accept()点击OK或使用dismiss()来取消

Alert alert_box = driver.switchTo().alert();
alert_box.accept(); 

要么

Alert alert_box = driver.switchTo().alert();
alert_box.dismiss(); 


Answer 9:

assertAlert应该做的伎俩。 我看到的文档,在页面的onload事件处理生成的警报不能照本宣科这种方式(和经历过自己,唉,由于ASP.NET页面生命周期)。 莫非是你正在运行到什么?



Answer 10:

对于硒,警报是使用JavaScript例如其中提出的一个

 javascript:alert();

有一个基本的检查,以验证您的警报是否实际上是一个JavaScript警告或者只是用于显示一些消息的基于div框。 如果它是一个JavaScript警告,您将无法看到它在屏幕上运行的硒脚本时。

如果你能看到它,那么你需要得到警报的OK键的定位和使用selenium.click(定位),以解除警报。 可以帮助你更好,如果你能提供更多的背景:

  1. IDE或RC?
  2. 警报的HTML代码
  3. 您的硒脚本。

Vamyip



Answer 11:

使用chooseOkOnNextConfirmation()来解除警报和getAlert()来验证它已被证明(和可选抓住它的验证文本)。

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);
...


Answer 12:

这是Python代码
与警报框的问题(特别是甜的警告是,他们有一个延迟和硒是非常太快)

为我工作的一种选择是:

while True:
    try:
        driver.find_element_by_xpath('//div[@class="sweet-alert showSweetAlert visible"]')
        break
    except:
        wait = WebDriverWait(driver, 1000)

confirm_button = driver.find_element_by_xpath('//button[@class="confirm"]')
confirm_button.click()


Answer 13:

新的硒IDE(2019年发布),具有更广泛的API和新的文档。

我相信这是你想尝试的命令:

选择的webdriver可见确认OK

描述的:

https://www.seleniumhq.org/selenium-ide/docs/en/api/commands/#webdriver-choose-ok-on-visible-confirmation

还有其他的警报相关的API调用; 只是搜索警报该页



文章来源: Click in OK button inside an Alert (Selenium IDE)