无法通过selenium webdriver与java点击Facebook“设置”链接

时间:2015-09-24 11:11:39

标签: java facebook selenium

我的Java

package com.palash.healthcare;

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class Login {
@Test
@Parameters({"URL","USERNAME","PASSWORD"})
public static void logindata(String url,String Username,String Password)
{
    WebDriver driver = new FirefoxDriver();
    driver.get(url);
    driver.manage().window().maximize();
    driver.findElement(By.id("email")).sendKeys(Username);
    driver.findElement(By.id("pass")).sendKeys(Password);
    driver.findElement(By.id("u_0_v")).click();
    driver.findElement(By.id("userNavigationLabel")).click();
    //driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    //driver.findElement(By.xpath("//span[@class='_54nh'][text()='Settings']")).click();
    List<WebElement> All_List = driver.findElements(By.xpath("//ul[@class='_54nf']"));
    for(WebElement li:All_List)
    {
        System.out.println(li.getText());
        if(li.getText().equalsIgnoreCase("Settings"));
        li.click();
    }


}

}

我正在使用java编写selenium webdriver中的facebook设置链接脚本,但我无法点击设置链接,我也试过上面的代码。可以帮忙吗?对于关于脚本的html,您可以在“注销”按钮上方看到Facebook设置链接。

3 个答案:

答案 0 :(得分:1)

不太清楚该列表发生了什么。如果我错了,我认为你不需要那个,但要纠正我。

我工作的网络应用程序真的很不稳定,有时你必须做一些奇怪的事情。尝试类似:

Actions actions = new Actions(driver);
WebElement settings = driver.findElement(By.xpath("//span[@class='_54nh'][text()='Settings']"));
actions.moveToElement(settings).build().perform();
settings.click();

这有点将.click()分解为更小的步骤。

花了很长时间才让.click()命令失效。它们在不同的Web应用程序中表现不同。

如果有效,请告诉我。

答案 1 :(得分:0)

您是否考虑过登录后导航到设置页面?这是https://www.facebook.com/settings

答案 2 :(得分:0)

driver.findElement(By.id("userNavigationLabel")).click();
Thread.sleep(3000);
driver.findElement(By.xpath("//span[@class='_54nh'][text()='Settings']")).click();

得到答案只需要重建Xpath。