2014-02-18 155 views
0

我與Facebook練習,如何使用Selenium Webdriver正確查找網頁的元素?

WebDriver driver = new HtmlUnitDriver(); 


driver.get("http://www.facebook.com"); 

成功logining後,我嘗試發送郵件。但我找不到消息區域:

WebElement selectMessages = driver.findElement(By.id("fbMessagesFlyout")); 
     selectMessages.click(); 


     WebElement elementMess = driver.findElement(By.id("q")); 
     elementMess.sendKeys("Dalia"); 
     elementMess.submit(); 

此代碼只在頭部配置了帶有消息的JavaScript,然後在fb頭部也發送搜索請求。 如何才能找到正確的鏈接到dialig頁面,然後找到文本詠歎調?

+0

請附上本節的html部分。 –

+0

您可以使用autoIt來識別特定WebElement的名稱/ ids /類等。甚至看看pageLayout .. – tr4pt

+0

這是相當大的,它是facebook首頁的常見html部分。 –

回答

1

這工作!

@BeforeTest 
public void setUp() throws Exception { 
    driver = new FirefoxDriver(); 
    baseUrl = "https://www.facebook.com"; 
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
} 

@Test 
public void testUntitled() throws Exception { 
    driver.get(baseUrl + "/login.php"); 
    driver.findElement(By.id("email")).sendKeys("[email protected]"); 
    driver.findElement(By.id("pass")).sendKeys("yourpassword"); 
    driver.findElement(By.name("login")).click(); 
    Thread.sleep(3000); 
    WebElement msgframe = driver.findElement(By.id("fbMessagesJewel")); 
    msgframe.findElement(By.tagName("a")).click(); 
    List<WebElement> element = driver.findElements(By 
      .className("messagesContent")); 
    element.get(0).click(); 
    WebElement chat = driver.findElement(By.className("fbNubFlyoutFooter")); 
    chat.findElement(By.tagName("textarea")).sendKeys("Hi"); 
    driver.findElement(By.tagName("textarea")).sendKeys(Keys.RETURN); 
    Thread.sleep(2000); 
} 
+1

非常感謝!我有幾個問題:你如何找到'className(「fbNubFlyoutFooter」)'和'tagName(「textarea」)'我在ctrl + u的佈局中找到它並且沒有找到它。你的代碼只是把「嗨」放到該區域,我該如何提交? –

+0

我只使用Chrome調試器;但這種情況並非如此。你也可以在其他瀏覽器上做同樣的事情。我不知道爲什麼你不能:( –

相關問題