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

Фотография

помогите новичку в Селениуме


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

#1 VASya

VASya

    Опытный участник

  • Members
  • PipPipPipPip
  • 364 сообщений


Отправлено 24 марта 2009 - 09:50

<p class="btnBox">
<a id="loginButton" class="round_button1" href="java script:document.getElementById('mainform').submit();" style="display: block;">
<span class="round_button2">
<span class="round_button3">Sign In</span>
</span>
</a>
<a class="round_button1" href="http://store.***.com/" style="display: none;">
<span class="round_button2">
<span class="round_button3">Cancel</span>
</span>
</a>
<br style="clear: both;"/>
<br style="clear: both;"/>
</p>


как проверить что текст на кнопке - "Sign In"?
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 24 марта 2009 - 10:07

как проверить что текст на кнопке - "Sign In"?

assertTrue(selenium.isElementPresent("xpath=//span[@class='round_button3' and text()='Sign In']")); // Проверяет наличие на странице span'а с классом 'round_button3' и текстом 'Sign In'.
Вообще span - это не кнопка, хотя может быть оформлена стилями как кнопка, а настоящая кнопка в HTML - это <input type="button/submit/reset"...> либо <button>...</button>

PS: Лучше не называть темы типа "Помогите", "Есть вопрос", "Что делать?" и т.п., а называть, например, так: "Как проверить наличие текста на кнопке?"
  • 0

#3 VASya

VASya

    Опытный участник

  • Members
  • PipPipPipPip
  • 364 сообщений


Отправлено 24 марта 2009 - 10:32

как проверить что текст на кнопке - "Sign In"?

assertTrue(selenium.isElementPresent("xpath=//span[@class='round_button3' and text()='Sign In']")); // Проверяет наличие на странице span'а с классом 'round_button3' и текстом 'Sign In'.
Вообще span - это не кнопка, хотя может быть оформлена стилями как кнопка, а настоящая кнопка в HTML - это <input type="button/submit/reset"...> либо <button>...</button>

PS: Лучше не называть темы типа "Помогите", "Есть вопрос", "Что делать?" и т.п., а называть, например, так: "Как проверить наличие текста на кнопке?"


Спасибо! учту все замечания. ;)
  • 0

#4 Gromozeka

Gromozeka

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

  • Members
  • Pip
  • 31 сообщений
  • ФИО:Дмитрий

Отправлено 27 января 2012 - 09:20

Не стал создавать новую тему. Помогите новичку тоже. У меня связка Selenium+eclipse+TestNG. Если тест выполнить в одном файле, то все работает ок. Но если вынести методы в отдельный класс, то не работает. Использую методы корректно, создают экземпляр класса перед этим. Почему тест не подхватывает методы из другого класса?
  • 0

#5 Jenka156

Jenka156

    Активный участник

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 27 января 2012 - 09:27

можно попробовать унаследовать класс с методами
  • 0

#6 Gromozeka

Gromozeka

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

  • Members
  • Pip
  • 31 сообщений
  • ФИО:Дмитрий

Отправлено 27 января 2012 - 09:31

можно попробовать унаследовать класс с методами

Я пробовал. Результат тот же.

Вынес @BeforeMethod и @AfterMethod в базовый класс. Теперь даже браузер не стартует.
  • 0

#7 biomaks

biomaks

    Постоянный участник

  • Members
  • PipPipPip
  • 171 сообщений
  • Город:Москва


Отправлено 27 января 2012 - 12:11

приложите исходники
  • 0

#8 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 27 января 2012 - 12:12

Чего гадать, показывайте Ваш код :)
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#9 Gromozeka

Gromozeka

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

  • Members
  • Pip
  • 31 сообщений
  • ФИО:Дмитрий

Отправлено 27 января 2012 - 16:59

Собственно базовый класс:
package HotelsWithMe;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import com.thoughtworks.selenium.*;

public class BaseTestClass extends SecurityManager {
protected Selenium selenium = null;
protected String delay = "";

@BeforeMethod(alwaysRun=true)
public void init() throws Exception {
delay = Config.getProperty( "delay" );
selenium = new DefaultSelenium( Config.getProperty( "host" ) , new Integer( Config.getProperty( "port" ) ) , Config.getProperty( "browser" ) , Config.getProperty( "url" ) );
selenium.start();
}
}

@AfterMethod(lastTimeOnly=true)
public void stop() throws Exception {
selenium.stop();
}
}
А это класс с тестом:
package HotelsWithMe;

import HotelsWithMe.Pages.facebookPage;

import com.thoughtworks.selenium.*;

import org.testng.annotations.*;
import static org.testng.Assert.*;
import java.util.regex.Pattern;
import org.testng.Assert;
import org.testng.annotations.Test;

public class Test1LondonSearching extends BaseTestClass {
	private Selenium selenium=null;

	public void LogIn() //Метод Логин пришлось поместить сюда, но по задумке все методы хочу вынести в базовый класс
	{
		selenium.open("http://www.facebook.com/HotelsWithMe?app_data=dev=true");
		selenium.waitForPageToLoad("30000");
		selenium.type("//input[@id='email']", "stesterov@gmail.com");
		selenium.type("//input[@id='pass']", "123");
		selenium.click("//label[@id='loginbutton']");
		selenium.waitForPageToLoad("50000");
		selenium.waitForCondition("selenium.isElementPresent(\"link=New trip\")","30000");
	}
        @Test 
	public void test1LondonSearching() throws Exception {
		NewTrip();
		SmplSearching("New York, NY, USA");
		assertTrue(selenium.isElementPresent("//div[b=\"New York, NY, USA\"]"));
	}	
      }

  • 0

#10 biomaks

biomaks

    Постоянный участник

  • Members
  • PipPipPip
  • 171 сообщений
  • Город:Москва


Отправлено 27 января 2012 - 17:36

проблема в
private Selenium selenium=null;
вы пытаетесь работать с тем что ссылается на null отсюда соответствующий эксепшн. Проинициализируйте нормально и будет вам счастье.

и эта же строка в классе потомке не нужна, вы объявляете объект повторно.
  • 0

#11 Gromozeka

Gromozeka

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

  • Members
  • Pip
  • 31 сообщений
  • ФИО:Дмитрий

Отправлено 27 января 2012 - 18:01

проблема в

private Selenium selenium=null;
вы пытаетесь работать с тем что ссылается на null отсюда соответствующий эксепшн. Проинициализируйте нормально и будет вам счастье.

и эта же строка в классе потомке не нужна, вы объявляете объект повторно.

Большое спасибо! Проблема решена.
  • 0


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

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