Невозможно ввести текст в поле «Создать новый твит» в Twitter с помощью Selenium Webdriver - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь автоматизировать твиты с помощью Selenium Webdriver в Chrome. Я могу войти в систему и нажать кнопку Tweet, открывая окно Compose new Tweet, но когда я пытаюсь ввести текст с помощью element.sendKeys(tweetMessage);, я получаю

org.openqa.selenium.ElementNotInteractableException: элемент не interactable

Использование: Селен-Java-3.141.59 хром = 74.0.3729.169 (Информация о драйвере: chromedriver = 74.0.3729.6)

Вот соответствующий код:

    String composeTweetXpath = "//div[@aria-labelledby='Tweetstorm-tweet-box-0-label Tweetstorm-tweet-box-0-text-label']//div";
    String tweetMessage = "This is my test Tweet";

    WebDriver driver;
    driver = new ChromeDriver();
.
.
.
.

try {
    element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(composeTweetXpath)));
    System.out.println("After wait until...");
    element = driver.findElement(By.xpath(composeTweetXpath));
    System.out.println("After driver.findElement...");
    element.click();
    System.out.println("After element.click...");
    element.sendKeys(tweetMessage);
    System.out.println("Found Tweet box and typed message");
} catch ( Exception e1) {
    System.out.println("Failed to find Tweet box");
    e1.printStackTrace();
}

Я удивлен, что я не получаю ошибку на element.click();, но на element.sendKeys (tweetMessage); Мой вывод из этого фрагмента:

После ожидания до ...

После driver.findElement ...

После element.click ...

Перемещено в элемент ...

Не удалось найти окно твита

org.openqa.selenium.ElementNotInteractableException: элемент не взаимодействует

Я также пытался использовать:

    String js = "arguments[1].value = arguments[0]; ";   
    System.out.println("Executing : " + js);
    javascript.executeScript(js, tweetMessage, element);

... вместо element.sendKeys(tweetMessage); Не попадает в блок} catch (Exception e1) {, но все равно не вводит текст в поле Compose new Tweet.

Как ни странно, если я использую driver = new FirefoxDriver();, я получаю сообщение об ошибке TimeoutException в этой строке:

    element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(composeTweetXpath)));

org.openqa.selenium.TimeoutException: ожидаемое условие не выполнено: ожидание нажатия элемента: By.xpath: // ДИВ [@ ария-labelledby = 'Tweetstorm-твит-бокс-0-метки Tweetstorm-tweet-box-0-text-label '] // div (пробовали в течение 10 секунд с Интервал 500 миллисекунд)


1 Ответ

1 голос
/ 29 мая 2019

Использовать селектор CSS

ChromeDriver newDriver = new ChromeDriver ();WebDriverWait ждет = новый WebDriverWait (newDriver, 50);

    newDriver.get("https://twitter.com/");
    newDriver.findElement(By.name("session[username_or_email]")).sendKeys("arungnairktm@gmail.com");
    newDriver.findElement(By.name("session[password]")).sendKeys("Cisco_12345678");
    newDriver.findElement(By.className("submit")).click();
    WebElement composes = waits
            .until(ExpectedConditions.visibilityOfElementLocated(By.id("global-new-tweet-button")));
    composes.click();
    WebElement tweets = waits.until(ExpectedConditions.visibilityOf(newDriver.findElement(By.cssSelector(
            "#Tweetstorm-tweet-box-0 > div.tweet-box-content > div.tweet-content > div.RichEditor.RichEditor--emojiPicker.is-fakeFocus > div.RichEditor-container.u-borderRadiusInherit > div.RichEditor-scrollContainer.u-borderRadiusInherit > div.tweet-box.rich-editor.is-showPlaceholder"))));

    tweets.click();
    tweets.sendKeys("heys");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...