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

Фотография

Selenium i gmail


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

#1 fOx

fOx

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

  • Members
  • Pip
  • 21 сообщений

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

Всем доброй ночи
Уже каторий день сижу и никак не получается с помощю селениума (рц) отослать письмо на гмейле - обичном не html версии.
Вся фишка в том что никакая тулка неможет толком показать ід кнопочки Send
уже незнаю что и делать - вся надежда на вас гуру
  • 0

#2 vanchous

vanchous

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

  • Members
  • Pip
  • 1 сообщений

Отправлено 19 октября 2009 - 07:18

Всем доброй ночи
Уже каторий день сижу и никак не получается с помощю селениума (рц) отослать письмо на гмейле - обичном не html версии.
Вся фишка в том что никакая тулка неможет толком показать ід кнопочки Send
уже незнаю что и делать - вся надежда на вас гуру


Просто этого параметра нет для этой кнопки. Пользуйся не доступом по id, т.к. его там нет. А Xpath объекта. Например, абсолютным -/html/body/div[1]/div[2]/div/div[2]/div[1]/div[3]/div[1]/div/div/div[2]/div/div/div/div/div[2]/div/div[2]/div/div/div/div[1]/div[@id=':4l']/div/div/div[@id=':2k']/div[@id=':2h']/div/div/div/div[2]/b
Это ненадежно ибо может поменяться любой элемент и тогда путь не правильный.

Но выкручиваться надо и более надежный способ - найти ближайший "стабильный" элемент (у которого есть id) и прописать от него относительный путь. Звучать будет как: //div[@id=':2h']/div/div/div/div[2]/b. если вдруг добавят еще где-то дивов, то можешь прописать еще и явно номера div в дереве: //div[@id=':2h']/div[1]/div[1]/div[1]/div[2]/b[1].

Это если полно. А если кратко:

Пользуй как Click("//div[@id=':2h']/div[1]/div[1]/div[1]/div[2]/b[1]").

З.Ы. Перестанет работать пересмотри путь в DOM Inspector + XPather
  • 0

#3 fOx

fOx

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

  • Members
  • Pip
  • 21 сообщений

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

так и сделал
прописивал и полний путь и относительний
ничего не получается - после клика ничего не происходит, даже не знаю куда дальше копать:(
Код прикрепил - может кто помочь?
public void sentMail() throws Exception {
		selenium.selectFrame("relative=top");
		selenium.selectFrame("id=canvas_frame");
		getScreen();
		assertTrue(selenium.isElementPresent("id=:qx"),
				"Link \"Compose Mail\" present on page", false);
		selenium.click("id=:qx");
		assertTrue(waitForElement("name=to", tryCount),
				"Wait for element \"To\"", true);
		assertTrue(selenium.isElementPresent("name=subject"),
				"On page present \"Subject\" element", false);
		assertTrue(waitForElement("name=body", tryCount),
				"Wait for email body input", true);
		if (selenium.isTextPresent("Plain Text")) {
			assertTrue(selenium.isTextPresent("Plain Text"), "Check on page present \"Rich formatting\"", true);
			log.info("Present PLAIN TEXT");
		} else {
			assertTrue(selenium.isTextPresent("Rich formatting"), "Check on page present \"Rich formatting\"", true);
			log.info("Present RICH FORMAT");
		}
		selenium.selectFrame("relative=top");
		selenium.selectFrame("id=canvas_frame");
		Assert.assertTrue(selenium.isElementPresent("xpath=id(':kg')/div/div/div/div[2]/b"));
		selenium.type("name=to", gmail_login.toLowerCase() + "@gmail.com");
		selenium.type("name=subject", seleniumMailSubject);
		selenium.type("name=body", seleniumMailBody);
		selenium.click("xpath=/HTML/BODY/DIV[1]/DIV[2]/DIV/DIV[2]/DIV[1]/DIV[3]/DIV[1]/DIV/DIV/DIV[2]/DIV/DIV/DIV/DIV/DIV[2]/DIV/DIV[2]/DIV/DIV/DIV/DIV[1]/DIV[@id=':lo']/DIV/DIV/DIV[@id=':kj']/DIV[@id=':kg']/DIV/DIV/DIV/DIV[2]/B");
		assertTrue(waitForElement("//div[2]/div/div/span/span[1]", tryCount),
				"Wait till the mail is sent", true);
		assertTrue(selenium.isTextPresent("Your message has been sent."),
				"On page present message \"Your message has been sent.\"", true);
	}

  • 0

#4 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

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

Уже выше отметили, что абсолютный Xpath ненадежен. Соответственно вот это:

selenium.click("xpath=/HTML/BODY/DIV[1]/DIV[2]/DIV/DIV[2]/DIV[1]/DIV[3]/DIV[1]/DIV/DIV/DIV[2]/DIV/DIV/DIV/DIV/DIV[2]/DIV/DIV[2]/DIV/DIV/DIV/DIV[1]/DIV[@id=':lo']/DIV/DIV/DIV[@id=':kj']/DIV[@id=':kg']/DIV/DIV/DIV/DIV[2]/B");

может не сработать. Попробуйте еще CSS-локаторы. У XPath есть проблема, что если вложенность элементов очень большая, то он плохо находит нужный элемент.
  • 0

#5 fOx

fOx

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

  • Members
  • Pip
  • 21 сообщений

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

я просто с css локаторами незнаком - а по тому хпазу селениум елемент видит, потому что асертом не падает, но вот после клика на елементе ничего не происходит :(
если можете подсказать css локатор для гмейла то буду очень благодарен
если нужно могу дать пароль и логин на мило - оно и так тестовое ничего там нужного нету
  • 0

#6 fOx

fOx

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

  • Members
  • Pip
  • 21 сообщений

Отправлено 19 октября 2009 - 11:20

Неужели никто не может помочь? :good:
  • 0

#7 hachapuri

hachapuri

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

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

Отправлено 19 октября 2009 - 12:35

clickAt("//div/div/div/div[1]/div/div/div/div[2]/b"); у меня работало в фф 3,0
или же clickAt("//b[text()='Отправить']");
  • 0

#8 fOx

fOx

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

  • Members
  • Pip
  • 21 сообщений

Отправлено 19 октября 2009 - 14:16

clickAt("//div/div/div/div[1]/div/div/div/div[2]/b"); у меня работало в фф 3,0
или же clickAt("//b[text()='Отправить']");

О спасибо большое
Заработал clickAt("//b[text()='Отправить']"); - правда окончательний вариант такой
selenium.clickAt("//b[text()='Send']", ""); кликет нужно два параметра - я так пробовал правда простим кликом - неработало, а кликет сработал:) спасибо
  • 0


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

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