2013-03-11 106 views

回答

0

我想點擊登錄你會被帶到一個幀後,即登記表。

你正在嘗試的是先切換到窗口(GB_Window)。

嘗試刪除切換到窗口電話,只需切換到框架,並嘗試操作

編輯代碼後,使用此

driver.findElement(By.linkText("Sign In")).click(); 
    driver.switchTo().frame(0); 
    driver.findElement(By.id("username")).sendKeys("[email protected]"); 

}

+0

沒有運氣,它只是停留在光標在電子郵件地址的框架..它不sendkeys..I已嘗試許多許多解決方案,迄今.. – Selenio 2013-03-11 14:13:59

+0

org.openqa.selenium.remote.UnreachableBrowserException:Error與遠程瀏覽器進行通信。它可能已經死亡。 構建信息:版本:'2.30.0',修訂:'dc1ef9c',時間:'2013-02-19 00:15:57' 系統信息:os.name:'Windows 7',os.arch:' x86',os.version:'6.1',java.version:'1.6.0_17' 驅動程序信息:driver.version:RemoteWebDriver – Selenio 2013-03-11 14:22:52

0

嘗試下面的代碼。它爲我工作。有兩個框架,您可以找到用戶名元素。第一幀是GB_frame,第二幀沒有html源文件中給出的任何名稱。所以我用第二個索引(frame(0))。

@Test 

public void fail() throws InterruptedException {  

     driver.findElement(By.linkText("Sign In")).click(); 
     //switch to frames inside the webpage 
     driver.switchTo().frame("GB_frame"); //1st frame 
      driver.switchTo().frame(0); //2nd frame    
       driver.findElement(By.id("username")).sendKeys("[email protected]"); 
} 
+0

非常感謝,不得不將thread.sleeps放入其中,因爲它移動得太快 – Selenio 2013-03-12 21:17:54

+0

@Gabriel Alexander Upvote我的答案或接受它作爲一個很好的答案,如果它已經幫助你或給你確切的解決方案。 – Hemanth 2013-03-13 03:46:30

0

你可以試試這個,告訴我它是否有效嗎?我懷疑你所遇到的只是一個Firefox的怪異,JavaScriptExecutor會繞過它。

public void setEmailAddrOnFieldInSubFrame() { 
    driver.findElement(By.linkText("Sign In")).click(); 
    driver.switchTo().window("GB_window"); 
    driver.switchTo().frame(0); 
    WebElement element = driver.findElement(By.id("username")); 
    JavascriptExecutor executor = (JavascriptExecutor)driver; 
    executor.executeScript("arguments[0].value='[email protected]';", element); 

    //cleanup frame position by switching back to previous window 
    driver.switchTo().defaultContent(); // always do this cleanup just in case 
} 
0

那麼,如果應用程序在Firefox上工作,那麼只需右鍵單擊。在上下文菜單中,您將首先通過查看選項「此幀」來查明元素是否在框架下。一旦你確認了這一點,然後檢查元素。在螢火蟲中緩慢滾動頂部,您會發現該元素所在的iframe標籤。用這種方式你會知道這個名字。如果您想知道所有iframe及其名稱的數量,請使用 driver.findElements(By.tag(「iframe」))。這將返回具有標籤的webelements列表,然後您可以逐個迭代並使用getAttribute(「name」)。請注意,僅當iframe實際上具有其他名稱的名稱時纔會返回空名稱。