【问题标题】:Prompting user input in selenium web driver before launching URL在启动 URL 之前提示用户在 selenium Web 驱动程序中输入
【发布时间】:2017-05-09 13:32:52
【问题描述】:

我正在尝试获取用户输入,然后将其存储到变量中,并且我想将该输入用于我的程序。

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

当前行为:

  1. 正在启动驱动程序(IE 显示消息“This is the Initial start page for wendriver server”
  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; 
            }
    }

    }

【问题讨论】:

  • IE shows the message " This is the Initial start page for wendriver server" 对我来说没问题。但是您在哪里可以找到 AlertUser input prompt ?你能分享一个相同的快照吗?
  • 添加了截图。如果您无法查看,请告诉我
  • 如果你手动接受提示而不是使用alert.accept()会发生什么?
  • 如果手动点击确定,IE存在上面的信息(驱动服务器信息)。之后什么都没有发生:(。同样
  • 我认为您正在使用代理,您可能需要禁用代理

标签: java selenium selenium-webdriver selenium-iedriver


【解决方案1】:

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

代码 sn-p:

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

【讨论】:

    【解决方案2】:

    试试下面的代码;它应该服务于您的目的:

    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) 
               { 
    
               }
       }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 2017-07-09
      相关资源
      最近更新 更多