2013-03-21 21 views
1

我使用selenium導航到頁面並使用Internet Explorer進行屏幕截圖。但問題是登錄被JavaScript警告框所照顧。現在Selenium有一個工具,通過使用警報元素可以將焦點帶到警報框中,並且我設法使用焦點並在用戶名文本框中輸入一些值。在用戶名和密碼文本框之間切換,並使用Selenium WebDriver輸入對應的值java

問題是Selenium沒有將焦點切換到密碼文本框,並在同一個框中輸入用戶名和密碼。我嘗試使用Java AWT Robot單擊Tab鍵並更改焦點,但Selenium無法識別此問題,並繼續在同一個框中輸入用戶名和密碼。

下面是我的代碼:

Robot robot = new Robot(); 
driver.get("the url"); 
Alert alert = driver.switchTo().alert(); 
alert.sendKeys("username"); 
robot.keyPress(KeyEvent.VK_TAB); 
alert.sendKeys("password"); 
alert.accept(); 

缺少什麼我在這裏?我的方法在這裏是正確的還是必須採取不同的路線?

回答

2

hi Madusudanan通過評論另一個開關方法來嘗試代碼。

Robot robot = new Robot(); 
Alert alert=dr.switchTo().alert(); 
dr.get("the url"); 
alert.sendKeys("username"); 
//dr.switchTo().alert(); 
robot.keyPress(KeyEvent.VK_TAB); 
alert.sendKeys("password"); 
alert.accept(); 
+0

嗨,我已經更新了我的code.please檢查,我不小心將它複製了兩次。焦點由AWT完成,即它切換到密碼文本框,但它沒有被selenium識別,這就是問題在這裏。 – Madusudanan 2013-03-21 10:12:05

+0

嗨Madusudanan使用此 StringSelection stringSelection = new StringSelection(「password」); ().getSystemClipboard()。setContents(stringSelection,null); 機器人機器人=新機器人();警報警報= dr.switchTo()。alert(); dr.get(「the url」); alert.sendKeys(「username」); (); alert(); robot.keyPress(KeyEvent.VK_TAB); robot.keyPress(KeyEvent.VK_CONTROL); //複製 robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL); alert.accept(); – selva 2013-03-21 12:04:34

+0

其工作。我添加了一些更多的robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER);其中確實按下了彈出的確定按鈕。非常感謝您的幫助:)。 – Madusudanan 2013-03-21 12:31:17

0

不是Java答案,但因爲我發現這個問題尋找這個問題的.net答案。

如果您使用.NET,你需要使用的SendKeys而不是機器人

using System.Windows.Forms; 

     _driver.SwitchTo().Alert().SendKeys("Username"); 
     SendKeys.SendWait("{TAB}"); 
     SendKeys.SendWait("password"); 
     SendKeys.SendWait("{Enter}"); 

希望這可以幫助別人!

0

根據你的問題,關注密碼後Selenium WebDriver無法輸入/輸入/輸入相應的值。您可以使用Robot類輸入密碼值。以下是整個代碼:

//First write a method to use StringSelection 
public void setClipboardData(String string) { 
      StringSelection stringSelection = new StringSelection(string); 
     Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null); 
    } 

Robot robot = new Robot(); 
driver.get("Your URL"); 
Alert alert = driver.switchTo().alert(); 
alert.sendKeys("username"); 
robot.keyPress(KeyEvent.VK_TAB); 
robot.keyRelease(KeyEvent.VK_TAB); 
//call setClipboardData method declared above 
setClipboardData("Your Password"); 
//Copy Paste by using Robot class 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_V); 
robot.keyRelease(KeyEvent.VK_CONTROL); 
alert.accept(); 
0

我創建的代碼一樣,從任何來源和工作加後:a.keyRelease(KeyEvent.VK_ADD); 。

  // Initialize InternetExplorerDriver Instance. 
      WebDriver driver = new InternetExplorerDriver(); 

      // Load sample calc test URL. 
      driver.get("your homepage testing"); 

      //Code to handle Basic Browser Authentication in Selenium. 
      Alert aa = driver.switchTo().alert(); 

      Robot a = new Robot(); 
      aa.sendKeys("beyond"+"\\"+"DND"); 

      a.keyPress(KeyEvent.VK_TAB); 
      a.keyRelease(KeyEvent.VK_TAB); 
      a.keyRelease(KeyEvent.VK_ADD);     

      setClipboardData("[email protected]"); 
      a.keyPress(KeyEvent.VK_CONTROL); 
      a.keyPress(KeyEvent.VK_V); 
      a.keyRelease(KeyEvent.VK_V); 
      a.keyRelease(KeyEvent.VK_CONTROL); 
      aa.accept(); private static void setClipboardData(String string)StringSelection stringSelection = new StringSelection(string); 

Toolkit.getDefaultToolkit()getSystemClipboard()setContents(stringSelection,NULL);

相關問題