Публикация статуса в Facebook с использованием Selenium и Java - PullRequest
0 голосов
/ 26 июня 2019

Как опубликовать статус в Facebook, используя Selenium и Java? Я пробовал нижеприведенный код, который не работает. Возможность войти в систему, но при появлении сообщения об ошибке нет такого элемента. обрабатывать это всплывающее окно также? Ниже код, который я использую для тестирования этого.

public class NewTest {
private WebDriver driver;

 @Test
public void testEasy() throws InterruptedException {

driver.get("https://www.facebook.com/");
Thread.sleep(5000);
driver.findElement(By.id("email")).sendKeys("email");
driver.findElement(By.id("pass")).sendKeys("password" + Keys.ENTER);

Thread.sleep(5000);

driver.findElement(By.xpath("//textarea[@title=\"What's on your mind?\"]")).click();
driver.findElement(By.xpath("//textarea[@title=\"What's on your mind?\"]")).sendKeys("Hello World");
driver.findElement(By.xpath("//textarea[@title=\"What's on your mind?\"]")).sendKeys(Keys.ENTER);

}

@BeforeTest
public void beforeTest() {
System.setProperty("webdriver.chrome.driver",
    "C:\\Users\\admin\\Desktop\\Test\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
}

@AfterTest
public void afterTest() {
driver.quit();
}

}

1 Ответ

0 голосов
/ 26 июня 2019
  1. Ваше выражение XPath не очень корректно, насколько я вижу, title соответствующего textarea выглядит так:

    What's on your mind, user1984
    

    , поэтому вам нужно изменить свой локатор, чтобы использовать XPath contains() функцию , например:

    By.xpath("//textarea[contains(@title,\"What's on your mind\")]")
    
  2. Использование Thread.sleep является быстродействующим анти-шаблоном , вместо этого следует использовать WebDriverWait .Пример измененного кода:

    driver.get("https://www.facebook.com/");
    WebDriverWait wait = new WebDriverWait(driver, 5);
    wait.until(ExpectedConditions.elementToBeClickable(By.id("email"))).sendKeys("email");
    wait.until(ExpectedConditions.elementToBeClickable(By.id("pass"))).sendKeys("password" + Keys.ENTER);
    
    
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//textarea[contains(@title,\"What's on your mind\")]"))).click();
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//textarea[contains(@title,\"What's on your mind\")]"))).sendKeys("Hello World");
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...