Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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


(Yerassyl Turlygazhy) #1

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


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


(Andrew Zakordonets) #2

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


(Roy Obenon) #3

(Yerassyl Turlygazhy) #4

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


(Yerassyl Turlygazhy) #5

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


(Andrew Zakordonets) #6

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


(Yerassyl Turlygazhy) #7

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


(Irinka Fesenko) #8

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


(Andrew Zakordonets) #9

Попробуй сначала переключиться на фрейм с 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')")


(Yerassyl Turlygazhy) #10

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


(Andrew Zakordonets) #11

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


(Irinka Fesenko) #12

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


(Yerassyl Turlygazhy) #13

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


(Svyatoslav Hnat) #14

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

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


(Stealthy) #15

Попробуй сначала кликнуть в это поле, а потом шли 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");

(5am) #16

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


(Farof Well) #17

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");