2016-05-18 76 views
0

我正在編寫一個TestNg腳本,我想關閉模式框並在瀏覽器上執行操作。我能夠關閉模式 ,但無法在瀏覽器上執行任何操作。關閉模式框後如何在瀏覽器上執行操作

driver.findElement(By.id("username")).clear(); 
      driver.findElement(By.id("username")).sendKeys(userName1); 
      driver.findElement(By.id("password")).clear(); 
      driver.findElement(By.id("password")).sendKeys(password1); 
      driver.findElement(By.id("Login")).click(); 
      Thread.sleep(5000); 
      switchtoLightining(); 
      driver.findElement(By.linkText("App Launcher")).click(); 
      driver.findElement(By.linkText("ICIX")).click(); 
      driver.findElement(By.linkText("Document Library")).click(); 
      driver.switchTo().frame(driver.findElement(By.id("vfFrameId"))); 
      driver.findElement(By.id("btn_AddDocument")).click(); 
      new Select(driver.findElement(By.id("ddTemplate"))) 
        .selectByVisibleText("GFSI Certification"); 
      driver.findElement(By.id("createButton")).click(); 
      // Get the current window handle 
      String winHandleBefore = driver.getWindowHandle(); 
      Thread.sleep(5000); 
      // Get the list of window handles 
      ArrayList<String> tabs2 = new ArrayList<String>(
        driver.getWindowHandles()); 
      System.out.println("size is:" + tabs2.size()); 
      driver.switchTo().window(tabs2.get(0)); 
    Robot rb = new Robot(); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_TAB); 
      Thread.sleep(2000); 
      rb.keyPress(KeyEvent.VK_ENTER);     

      Thread.sleep(2000); 
      // Click on the upload button 
      // Switch to the parent old window 
      driver.switchTo().window(winHandleBefore); 
      Thread.sleep(2000); 
      driver.findElement(By.xpath("//button[@class='slds-button slds-button--brand slds-m-horizontal--small']")).click();*/ 
      driver.findElement(By.xpath(".//[@id='uploadButton']")).click(); 
+0

什麼錯誤味精你得到 –

+0

我得到這個錯誤 - org.openqa.selenium.NoSuchElementException:找不到元素:{「方法」:「的XPath」,「選擇「:」.//*[@ id ='uploadButton']「} 命令持續時間或超時時間:25.13秒 – user3168935

+0

嗨,我很困惑你的代碼//獲取當前窗口句柄 String winHandleBefore = driver.getWindowHandle() ;在這裏,你正在使用父窗口句柄,然後你切換到driver.switchTo()。window(tabs2.get(0)); //但是0索引再次用於父窗口因此事實上你並沒有切換任何窗口 –

回答

0

根據切換到該模型窗口之前提供的代碼,您在一個框架內。所以我期待你可能需要切換到幀後

  driver.switchTo().window(winHandleBefore); 

點擊該上傳按鈕。

如果上傳按鈕不在框架中,只要看到gettitle或getcurrenturl會讓你父母或winHandleBefore跨司機切換到窗口或不。如果驅動程序正確切換到winHandleBefore,請使用您的上傳元素定位器。請檢查一次。

謝謝你, 穆拉利

+0

謝謝。你是正確的按鈕是在框架內,切換到框架爲me.driver.switchTo()。frame(driver.findElement(By.id(「vfFrameId」))); – user3168935