Перейти к содержимому

Фотография

Selenium Java. Как нажать на кнопку всплывающем окне

Selenium Java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 ravenous150

ravenous150

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Филипьев Евгений

Отправлено 16 октября 2015 - 21:20

Здравствуйте, уважаемые форумчане!!! Буквально пару недель изучаю Selenium Java и пришло время написать первые тесты. Суть теста заключается в том, чтобы отправить электронное письмо через mail.ru. Полностью рабочий тест. Но я решил пойти дальше и попробовать отправить письмо без текста, а только с известным адресом получателя и темой. Собственно вот здесь я и не могу подтверить всплывающее окно, которое появляется после нажатия на кнопку "Отправить". Буду рад за помощь

package selenium;


import java.util.concurrent.TimeUnit;
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.support.ui.Select;

public class LinkText {

	public static void main(String[] args) throws InterruptedException {
		WebDriver driver = new FirefoxDriver ();
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
		
		driver.get("https://mail.ru/?from=logout");
		
		driver.findElement(By.id("mailbox__login")).sendKeys("login");
		
		Thread.sleep(4000);
		Select dropDown = new Select(driver.findElement(By.id("mailbox__login__domain")));
		dropDown.selectByIndex(4);
		
		driver.findElement(By.id("mailbox__password")).sendKeys("password");
		driver.findElement(By.id("mailbox__auth__button")).click();
		driver.findElement(By.className("b-toolbar__item")).click();
		
		WebElement comy = driver.findElement(By.cssSelector("textarea[class*='js-input compose__labels__input']"));
		comy.sendKeys("mail");
		
		Thread.sleep(5000);
		WebElement meta = driver.findElement(By.cssSelector("input[id*='compose_419_ab_compose_subj']"));
		meta.sendKeys("Test");
		
	        Thread.sleep(5000);
		WebElement frame = driver.findElement(By.cssSelector("iframe[id*='compose_419_composeEditor_ifr']"));
		driver.switchTo().frame(frame);
		WebElement type = driver.switchTo().activeElement();
		type.sendKeys("Отправлено с помощью Selenium");
		driver.switchTo().defaultContent();
		
		Thread.sleep(5000);
		WebElement element = driver.findElement(By.xpath("//div[@id='b-toolbar__right']/div[3]/div/div[2]/div/div/span"));
		((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);
		
		driver.findElement(By.id("PH_logoutLink")).click();
		driver.quit();
   }
}

Прикрепленные файлы

  • Прикрепленный файл  mail.jpg   47,45К   0 Количество загрузок:
  • Прикрепленный файл  mail1.jpg   89,25К   0 Количество загрузок:

  • 0

#2 ravenous150

ravenous150

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Филипьев Евгений

Отправлено 18 октября 2015 - 16:43

Получилось решить задачу применив робот класс. Если кто знает другой вариант, то отпишите пожайлуста

import java.awt.Robot;

Robot rr = new Robot();
rr.keyPress(KeyEvent.VK_ENTER);
rr.keyRelease(KeyEvent.VK_ENTER);

  • 0

#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 19 октября 2015 - 08:03

Невозможно разобраться в твоём коде, что и как ты делаешь

Кнопка продолжить - это обычная кнопка, которая нажимается через примитивный код

driver.findElement(By.xpath("//div[@class='is-submit_empty_message_in']//button[@type='submit']")).click();

Т.е. не понятно, какие тут могут быть проблемы

Зачем тебе JSExecutor ??

WebElement element = driver.findElement(By.xpath("//div[@id='b-toolbar__right']/div[3]/div/div[2]/div/div/span"));
        ((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);

Так просто кликнуть нельзя

driver.findElement(By.xpath("//div[@id='b-toolbar__right']/div[3]/div/div[2]/div/div/span")).click() ?


  • 0

#4 ravenous150

ravenous150

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Филипьев Евгений

Отправлено 19 октября 2015 - 09:19

Невозможно разобраться в твоём коде, что и как ты делаешь

Кнопка продолжить - это обычная кнопка, которая нажимается через примитивный код

driver.findElement(By.xpath("//div[@class='is-submit_empty_message_in']//button[@type='submit']")).click();

Т.е. не понятно, какие тут могут быть проблемы

Зачем тебе JSExecutor ??

WebElement element = driver.findElement(By.xpath("//div[@id='b-toolbar__right']/div[3]/div/div[2]/div/div/span"));
        ((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);

Так просто кликнуть нельзя

driver.findElement(By.xpath("//div[@id='b-toolbar__right']/div[3]/div/div[2]/div/div/span")).click() ?

Спасибо, все что вы написали работает. Я понял свои ошибки


  • 0

#5 Kurochkin

Kurochkin

    Новый участник

  • Members
  • Pip
  • 17 сообщений
  • ФИО:Курочкин Ярослав Эдуардович

Отправлено 02 ноября 2017 - 16:03

Решили:

Selenium не умеет работать с event.prevent из-за чего не принимались значения через ввод с помощью Sendkey.

Переделали на String (char) и заработало!


  • 0



Темы с аналогичным тегами Selenium, Java

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных