2014-02-18 117 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调试器;但这种情况并非如此。你也可以在其他浏览器上做同样的事情。我不知道为什么你不能:( –

相关问题