t.me/atinfo_chat Telegram группа по автоматизации тестирования

Помогите найти xpath поля ввода сообщения на сайте mail.ru

Я новичек изучающий селениум, и никак не могу достучаться до поля ввода сообщения. Пробовал firebug, firepath не помогло, выдает xpath, использую ошибка: NoSuchElementException


у меня задача возпроизвести сценарий написания письма, проблема именно с телом, остально работает

Скорей всего это поле находится в iframe. Тебе надо переключиться на него, а потом уже вводить в него текст. Я сейчас с теефона пишу и не могу код страницы глянуть, но поаробуй разобраться в этом - гугл сразу подскажет (особенно если этот редактор является готовым встроеным редактором). Если не разберешься, пиши что пробывал и как - помогу дальше

1 Симпатия
2 Симпатий

не смог взять этот фрейм как WebElement driver.switchTo().frame(driver.findElement(By.id(“compose_403_composeEditor_ifr”)));

там решение через xpath, в моем случае не получается его определить

Ссылка 1 -> Ссылка 2 . Попробуй то что там описано и дай знать как успехи.

не, этот ИД тоже не помогает, пытался так driver.findElement(By.cssSelector(“mceContentBody increase-font”)), тоже результатов нет

может, точки перед классом нужно ставить (".mceContentBody") или можно #tinymce

Попробуй сначала переключиться на фрейм с xpath - //*[contains(@id,"composeEditor_ifr")] , после чего driver.findElement(By.xpath("//body")).sendKeys("your text here" ) . После чего не забудь переключиться на дефолтное окно.

Если это не прокатит, можно попрообвать еще через javascript на подобии вот этого - driver.execute_script("tinyMCE.activeEditor.setContent('<h1>Yi Zeng</h1> TinyMCE')")

2 Симпатий

забросил эту работу(( сложновата

Зря. Это только говорит о том что ты для этой работы не подходишь. Если бы я тебя собеседовал - то рекомендовал бы тебя не брать к себе в компанию. Вместо того что бы сдаваться, отложи это до завтра и попробуй со свежей головой.

1 Симпатия

согласна с @biercoff. зачем отнимаете время у других, если Вам это не нужно?

я совсем новичек, не все сразу

В таких едиторах ID может меняться, фрейма или самого едитора и его кнопок, будьте внимательны.

Наверно еще нужно использовать typeKeys вместо sendKeys когда едитор будет активным для того
чтобы вставить текст в него.

1 Симпатия

Попробуй сначала кликнуть в это поле, а потом шли sendKeys

 driver.switchTo().frame(driver.findElement(By.xpath(".//tr[@class='mceFirst mceLast']//iframe")));
 driver.findElement(By.id("tinymce")).click();
 driver.findElement(By.id("tinymce")).sendKeys("sdfsdfsdfsfsdfsdffsdf");

sendkeys в div обычно не работает) exception вылетает.

id тут генерятся динамически, потому просто по нему искать без толку, вот так я написал письмо

WebElement we = driver.findElement(By.xpath("//iframe[starts-with(@id,'compose_')]"));
driver.switchTo().frame(we);
driver.findElement(By.id("tinymce")).click();
driver.findElement(By.id("tinymce")).sendKeys("123456");
3 Симпатий