Я пытался заставить Selenium Driver публиковать пост в Facebook, как правило, с помощью драйвера Firefox, но не смог / не смог нормально это сделать: по какой-то причине я вынужден сделать прокрутку браузера вниз, прежде чем нажать кнопкув противном случае я получаю ошибку.
Вот мой код:
Код-листинг 1: Main.java
package main;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Main {
public static void main(String args[]) {
System.setProperty("webdriver.gecko.driver", "D:\\PortableApps\\Webdrivers\\geckodriver.exe");
FirefoxOptions options = new FirefoxOptions()
.addPreference("browser.startup.page", 1)
.addPreference("permissions.default.desktop-notification", 1)
.addPreference("intl.accept_languages", "en-US")
.addPreference("browser.startup.homepage", "https://www.google.co.uk");
WebDriver driver = new FirefoxDriver(options);
driver.get("https://www.facebook.com");
driver.findElement(By.className("inputtext")).sendKeys("ghostbrain@hotmail.fr");
driver.findElements(By.className("inputtext")).get(1).sendKeys("Xrt4LV512");
driver.findElement(By.className("inputtext")).submit();
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement postBox = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("feedx_sprouts_container")));
postBox.click();
postBox = wait.until(ExpectedConditions.presenceOfNestedElementLocatedBy(By.id("feedx_sprouts_container"), By.className("notranslate")));
postBox.sendKeys("Hello Post!");
try {
Thread.sleep(5000);//Necessary because of the way facebook works
} catch (InterruptedException e) {}
WebElement postButton = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#feedx_sprouts_container button[type=submit]")));
postButton.click();
}
}
если я запускаю этот код, я получаю сообщение об ошибке из Facebook, в котором говорится:
Ваш запрос не может быть обработан
Возникла проблема с этим запросом. Мы работаем над тем, чтобы исправить это как можно скорее.
![visual representation of the facebook request couldn't be processed](https://i.stack.imgur.com/sZ0WD.png)
, чтобы решить эту проблему, мне пришлось воспользоваться решением Selenium и Facebook Post Button: Как нажать кнопку публикации Facebook в Java, используя селен? . То есть мне пришлось заставить браузер прокручиваться вниз, используя следующий код после Thread.sleep () try / catch.
Листинг 2: Extra
((JavascriptExecutor)driver).executeScript("window.scrollBy(0,259)","");
Это работает, но это ненормально, и я боюсь, что попадаю на другую стену с Facebook позже, если я не знаю причины этой ошибки.