启动前提示用户在 selenium web 驱动程序中输入 URL

Prompting user input in selenium web driver before launching URL

我正在尝试将用户输入存储到变量中,我想将该输入用于我的程序。

这是我的代码,代码要求用户输入但不加载 URL。它只是启动驱动程序。请有人纠正我。

当前行为:

  1. 正在启动驱动程序(IE 显示消息“这是 wendriver 服务器的初始启动页面”
  2. 请求提示。我在提示中输入了内容,然后单击“确定”。 就是这样......在代码没有被执行之后。请帮助我

enter image description here

    public class app{   

    public static void main(String[] args) throws Throwable
    {

    System.setProperty("webdriver.ie.driver", "C:\Automation\IEDriverServer.exe");
    WebDriver driver = new InternetExplorerDriver();
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("window.promptResponse=prompt('Please enter the USER ID')");

    if(isAlertPresent(driver)) {
        // switch to alert
        Alert alert = driver.switchTo().alert();

        // sleep to allow user to input text
        Thread.sleep(10000);

        // this doesn't seem to work 
        alert.accept();
        String ID = (String) js.executeScript("return window.promptResponse");


    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);


    driver.get("my application URL");
    driver.findElement(By.name("USERID")).sendKeys("username");
    driver.findElement(By.name("user_pwd")).sendKeys("mypwd");
    driver.findElement(By.name("submit")).submit();
    .......
    ......
    // some more code which is doing my application fucntionality
    .......
    ......
    ........

    private static boolean isAlertPresent(WebDriver driver) {
         try 
            { 
                driver.switchTo().alert(); 
                return true; 
            }   // try 
            catch (NoAlertPresentException Ex) 
            { 
                return false; 
            }
    }

    }

如果您需要从 promp 获取输入(即 URL),那么您可以使用 JOptionPaneshowInputDialog() 来自 Java Swing 的方法。

代码片段:

 String URL =JOptionPane.showInputDialog(null,"Enter URL");  

试试下面的代码;它应该符合您的目的:

public class app{   

    public static void main(String[] args) throws Throwable
    {

    System.setProperty("webdriver.ie.driver", "C:\Automation\IEDriverServer.exe");
    WebDriver driver = new InternetExplorerDriver();
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("window.promptResponse=prompt('Please enter the USER ID')");

    isAlertPresent(driver);

    String ID = (String) js.executeScript("return window.promptResponse");

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);


    driver.get("my application URL");
    driver.findElement(By.name("USERID")).sendKeys("username");
    driver.findElement(By.name("user_pwd")).sendKeys("mypwd");
    driver.findElement(By.name("submit")).submit();
    }

    private static void isAlertPresent(WebDriver driver) {
        try 
           { 
               driver.switchTo().alert(); 
               driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  // even though not needed

               isAlertPresent(driver);
           }   // try 
           catch (NoAlertPresentException Ex) 
           { 

           }
   }

}