Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SeleniumWebDriver正确查找网页元素?_Java_Facebook_Selenium - Fatal编程技术网

Java 如何使用SeleniumWebDriver正确查找网页元素?

Java 如何使用SeleniumWebDriver正确查找网页元素?,java,facebook,selenium,Java,Facebook,Selenium,我在Facebook上练习 WebDriver driver = new HtmlUnitDriver(); driver.get("http://www.facebook.com"); 成功登录后,我尝试发送消息。但我找不到信息区: WebElement selectMessages = driver.findElement(By.id("fbMessagesFlyout")); selectMessages.click(); WebElement e

我在Facebook上练习

WebDriver driver = new HtmlUnitDriver();


driver.get("http://www.facebook.com");
成功登录后,我尝试发送消息。但我找不到信息区:

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


        WebElement elementMess = driver.findElement(By.id("q"));
        elementMess.sendKeys("Dalia");
        elementMess.submit();
这段代码只是在头上部署带有消息的javascript,然后在fb头上发送搜索请求。 如何找到拨号页面的正确链接,然后在那里找到文本

这很有效

@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("youridhere@gmail.com");
    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);
}
@BeforeTest
public void setUp()引发异常{
驱动程序=新的FirefoxDriver();
baseUrl=”https://www.facebook.com";
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
}
@试验
public void testUntitled()引发异常{
get(baseUrl+“/login.php”);
driver.findElement(By.id(“电子邮件”)).sendKeys(“youridhere@gmail.com");
driver.findElement(By.id(“pass”)).sendKeys(“您的密码”);
driver.findElement(按.name(“登录”))。单击();
睡眠(3000);
WebElement msgframe=driver.findelelement(By.id(“fbMessagesJewel”);
msgframe.findElement(按.tagName(“a”))。单击();
列表元素=驱动程序.findElements(按
.className(“messagesContent”);
元素。获取(0)。单击();
WebElement chat=driver.findElement(By.className(“fbNubFlyoutFooter”);
chat.findElement(按.tagName(“textarea”)).sendKeys(“Hi”);
driver.findElement(按.tagName(“textarea”)).sendKeys(Keys.RETURN);
《睡眠》(2000年);
}

请附上本节的html部分。您可以使用autoIt识别特定Web元素的名称/ID/类等。甚至可以看看页面布局。它相当大,是facebook主页中常见的html部分。你用过
WebDriverWait
来“等待”它吗?您确定不能使用本机API执行此操作吗?此代码正在运行,但它不是特定任务。我不知道如何找到当前元素,我查看了页面布局,但我只看到fb HeaderHanks的元素很多!我有几个问题:如何找到
className(“fbNubFlyoutFooter”)
标记名(“textarea”)
我在浏览器中使用ctrl+u在布局中查找它,但没有找到。你的代码只是把“嗨”的区域,我如何才能提交?我只使用Chrome调试器;但事实并非如此。您也可以在其他浏览器上执行同样的操作。我不知道你为什么不能:(