• selenium webdriver学习(七)------------如何处理alert、confirm、prompt对话框( 转)


    alert、confirm、prompt这样的js对话框在selenium1.X时代也是难啃的骨头,常常要用autoit来帮助处理。

    试用了一下selenium webdriver中处理这些对话框十分方便简洁。以下面html代码为例:

    Html代码  收藏代码
    1. Dialogs.html  
    Html代码  收藏代码
    1. <html>  
    2.   
    3.     <head>  
    4.   
    5.         <title>Alert</title>  
    6.   
    7.     </head>  
    8.   
    9.     <body>  
    10.   
    11.         <input id = "alert" value = "alert" type = "button" onclick = "alert('欢迎!请按确认继续!');"/>  
    12.     <input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定吗?');"/>  
    13.     <input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入你的名字:','请输入  
    14.   
    15. 你的名字'); document.write(name) "/>  
    16.       
    17.   
    18.     </body>  
    19.   
    20. </html>  

     以上html代码在页面上显示了三个按钮,点击他们分别弹出alert、confirm、prompt对话框。如果在prompt对话框中输入文字点击确定之后,将会刷新页面,显示出这些文字 。

    selenium webdriver 处理这些弹层的代码如下:

    Java代码  收藏代码
    1. import org.openqa.selenium.Alert;  
    2. import org.openqa.selenium.By;  
    3. import org.openqa.selenium.WebDriver;  
    4. import org.openqa.selenium.firefox.FirefoxDriver;  
    5.   
    6. public class DialogsStudy {  
    7.   
    8.     /** 
    9.      * @author gongjf 
    10.      */  
    11.     public static void main(String[] args) {  
    12.         // TODO Auto-generated method stub  
    13.         System.setProperty("webdriver.firefox.bin","D:\Program Files\Mozilla Firefox\firefox.exe");    
    14.         WebDriver dr = new FirefoxDriver();  
    15.         String url = "file:///C:/Documents and Settings/gongjf/桌面/selenium_test/Dialogs.html";// "/Your/Path/to/main.html"  
    16.         dr.get(url);  
    17.           
    18.         //点击第一个按钮,输出对话框上面的文字,然后叉掉  
    19.         dr.findElement(By.id("alert")).click();  
    20.         Alert alert = dr.switchTo().alert();  
    21.         String text = alert.getText();  
    22.         System.out.println(text);  
    23.         alert.dismiss();  
    24.           
    25.         //点击第二个按钮,输出对话框上面的文字,然后点击确认  
    26.         dr.findElement(By.id("confirm")).click();  
    27.         Alert confirm = dr.switchTo().alert();  
    28.         String text1 = confirm.getText();  
    29.         System.out.println(text1);  
    30.         confirm.accept();  
    31.           
    32.         //点击第三个按钮,输入你的名字,然后点击确认,最后  
    33.         dr.findElement(By.id("prompt")).click();  
    34.         Alert prompt = dr.switchTo().alert();  
    35.         String text2 = prompt.getText();  
    36.         System.out.println(text2);  
    37.         prompt.sendKeys("jarvi");  
    38.         prompt.accept();  
    39.           
    40.     }  
    41.   
    42. }  
     

    从以上代码可以看出dr.switchTo().alert();这句可以得到alertconfirmprompt对话框的对象,然后运用其方法对它进行操作。对话框操作的主要方法有:

    • getText()    得到它的文本值
    • accept()      相当于点击它的"确认"
    • dismiss()     相当于点击"取消"或者叉掉对话框
    • sendKeys() 输入值,这个alertconfirm没有对话框就不能用了,不然会报错。
  • 相关阅读:
    Codeforces Round #443 (Div. 2)
    Matplotlib学习---用seaborn画联合分布图(joint plot)
    Matplotlib学习---用matplotlib和sklearn画拟合线(line of best fit)
    Matplotlib学习---用mplot3d画莫比乌斯环(Mobius strip)
    Matplotlib学习---用matplotlib画误差线(errorbar)
    Matplotlib里颜色,标记,线条类型参数的选择(colors, markers, line styles)
    Matplotlib学习---用matplotlib画阶梯图(step plot)
    Matplotlib学习---用matplotlib画箱线图(boxplot)
    Matplotlib学习---用seaborn画相关矩阵图(pair plot)
    Matplotlib学习---用matplotlib画面积图(area chart)
  • 原文地址:https://www.cnblogs.com/yye2010/p/4596912.html
Copyright © 2020-2023  润新知