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

Фотография

проблема с драйвером


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

#1 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

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

Столкнулась с непонятной проблемой.
Тестирую gmail.com.
подключаю FirefoxDriver. Захожу на главную страницу, ввожу логин и пароль, всё нормально проходт, но как только перехожу на страницу с почтой сталкиваюсь с проблемой.. не ищутся элементы. title страницы вроде бы выдает правильный... но элементы на странице не ищутся никакими методами.
пишет ошибку:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//a[contains(text(),'Terms')]"}
Command duration or timeout: 16 milliseconds
For documentation on this error, please visit: http://seleniumhq.or...ch_element.html
Build info: version: '2.20.0', revision: '16008', time: '2012-02-28 15:00:40'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_26'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:170)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:123)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:438)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:226)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:299)
at org.openqa.selenium.By$ByXPath.findElement(By.java:344)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:218)
at com.epam.gmail.pages.MailPage.getAccountBar(MailPage.java:22)
at com.epam.gmail.tests.SignIn.signIn(SignIn.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:691)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:883)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1208)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:758)
at org.testng.TestRunner.run(TestRunner.java:613)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1142)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1067)
at org.testng.TestNG.run(TestNG.java:979)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:109)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:202)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:173)
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to locate element: {"method":"xpath","selector":"//a[contains(text(),'Terms')]"}
Build info: version: '2.20.0', revision: '16008', time: '2012-02-28 15:00:40'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_26'
Driver info: driver.version: unknown

не могу найти причину=((((
  • 0

#2 D2Phoenix

D2Phoenix

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

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 11 апреля 2012 - 14:37

Столкнулась с непонятной проблемой.
Тестирую gmail.com.
подключаю FirefoxDriver. Захожу на главную страницу, ввожу логин и пароль, всё нормально проходт, но как только перехожу на страницу с почтой сталкиваюсь с проблемой.. не ищутся элементы. title страницы вроде бы выдает правильный... но элементы на странице не ищутся никакими методами.
пишет ошибку:

А у вас случаем не русская версия gmail открывается?
  • 0

#3 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

Отправлено 11 апреля 2012 - 14:38

А у вас случаем не русская версия gmail открывается?


нет. Английская.
  • 0

#4 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

Отправлено 11 апреля 2012 - 14:39

Дело в том, что возможно я как-то криво предаю драйвер в ту страницу, хотя я думаю, что если тайтл страницы выводится. значит драйвер работает
  • 0

#5 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

Отправлено 11 апреля 2012 - 14:55

Я проверила простоп ереход на другу страницу. на страницу регистрации например. там все находит... значит драйвер передается нормально.
не работает получается на странице с почтой, я думала может оно не успевает загрузиться.. но как это проверить?
  • 0

#6 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 11 апреля 2012 - 15:00

Я проверила простоп ереход на другу страницу. на страницу регистрации например. там все находит... значит драйвер передается нормально.
не работает получается на странице с почтой, я думала может оно не успевает загрузиться.. но как это проверить?

Если есть подозрения на загрузку элементов страницы, попробуй искуственно добавить задержку и посмотри найдутся ли они после этого.
  • 0

#7 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

Отправлено 11 апреля 2012 - 15:13

можно подсказать, какой функцией это сделать лучше?
  • 0

#8 D2Phoenix

D2Phoenix

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

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 11 апреля 2012 - 15:14

Посмотрел что там gmail из себя представляет) Вообщем эта куча iframe))))))
Так что ищете нужный и переключайтесь в него, чтоб нажать)
driver.switchTo().frame( <номер> );
Вообщем ищите сами)) потому что их там очень много)

Подсказка - это левая менюшка:
driver.switchTo().frame( 3 );

  • 0

#9 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

Отправлено 11 апреля 2012 - 15:18

driver.manage().timeouts().implicitlyWait(200, TimeUnit.MILLISECONDS);

пробовала так..
все равно то же самое=(
  • 0

#10 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

Отправлено 11 апреля 2012 - 15:30

Посмотрел что там gmail из себя представляет) Вообщем эта куча iframe))))))
Так что ищете нужный и переключайтесь в него, чтоб нажать)

driver.switchTo().frame( <номер> );
Вообщем ищите сами)) потому что их там очень много)

Подсказка - это левая менюшка:
driver.switchTo().frame( 3 );


а как это определяется?... можно поподробнее?
я просто только начинаю работать c SeleniumWD
  • 0

#11 D2Phoenix

D2Phoenix

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

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 11 апреля 2012 - 15:40


Посмотрел что там gmail из себя представляет) Вообщем эта куча iframe))))))
Так что ищете нужный и переключайтесь в него, чтоб нажать)

driver.switchTo().frame( <номер> );
Вообщем ищите сами)) потому что их там очень много)

Подсказка - это левая менюшка:
driver.switchTo().frame( 3 );


а как это определяется?... можно поподробнее?
я просто только начинаю работать c SeleniumWD

Вы выбрали неудачный пример для обучения. Возьмите что-нибудь попроще. Так как в данном конкретном случае очень сложно определять iframe на прямую(фактически вслепую определяете, перебором), так как их просто нет в исходном html (а он представляет из себя json запросы вроде бы)
  • 0

#12 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

Отправлено 11 апреля 2012 - 15:44

Вы выбрали неудачный пример для обучения. Возьмите что-нибудь попроще. Так как в данном конкретном случае очень сложно определять iframe на прямую(фактически вслепую определяете, перебором), так как их просто нет в исходном html (а он представляет из себя json запросы вроде бы)


Я бы с удовольствием, если бы я сама могла выбирать)))
  • 0

#13 D2Phoenix

D2Phoenix

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

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 11 апреля 2012 - 15:48

Я бы с удовольствием, если бы я сама могла выбирать)))

Вообщем юзайте Chrome и его Developers Tools. Там нормально всё видно) Эт чёт FireBug не видит Iframe's)
Нужный вам фремйм id="canvas_frame"
Для переключения делайте так:
driver.switchTo().frame( "canvas_frame" );
                driver.get( "http://www.gmail.com" );
		driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS );
		
		
		WebElement element = driver.findElement( By.id( "Email" ) );
		element.sendKeys( "vadim.chadyuk@gmail.com" );
		
		WebElement element2 = driver.findElement( By.id( "Passwd" ) );
		element2.sendKeys( "12345612345" );
		
		WebElement element3 = driver.findElement( By.id( "signIn" ) );
		element3.click();
		
		driver.switchTo().frame( "canvas_frame" );
		WebElement element4 = driver.findElement( By.linkText( "Условия            использования" ) );
		element4.click();
		Thread.sleep( 10000 );
		// Check the title of the page
		System.out.println( "Page title is: " + driver.getTitle() );
Update
Для возвращения ко всему документу:
driver.switchTo().defaultContent();

  • 0

#14 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

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


Я бы с удовольствием, если бы я сама могла выбирать)))

Вообщем юзайте Chrome и его Developers Tools. Там нормально всё видно) Эт чёт FireBug не видит Iframe's)
Нужный вам фремйм id="canvas_frame"
Для переключения делайте так:
driver.switchTo().frame( "canvas_frame" );
                driver.get( "http://www.gmail.com" );
		driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS );
		
		
		WebElement element = driver.findElement( By.id( "Email" ) );
		element.sendKeys( "vadim.chadyuk@gmail.com" );
		
		WebElement element2 = driver.findElement( By.id( "Passwd" ) );
		element2.sendKeys( "Phoenixhp08081991CVS" );
		
		WebElement element3 = driver.findElement( By.id( "signIn" ) );
		element3.click();
		
		driver.switchTo().frame( "canvas_frame" );
		WebElement element4 = driver.findElement( By.linkText( "Условия            использования" ) );
		element4.click();
		Thread.sleep( 10000 );
		// Check the title of the page
		System.out.println( "Page title is: " + driver.getTitle() );
Update
Для возвращения ко всему документу:
driver.switchTo().defaultContent();


большое спасибо.
Попробую поюзать Chrome)
я вообще его больше люблю)))
  • 0

#15 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

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

driver.switchTo().frame("canvas_frame");
System.out.println(this.isElementPresent(By.linkText("Details")));

Error! Element is not present!
false

Вот...=((((
  • 0

#16 D2Phoenix

D2Phoenix

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

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


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

driver.switchTo().frame("canvas_frame");
System.out.println(this.isElementPresent(By.linkText("Details")));

Error! Element is not present!
false

Вот...=((((

Ну так в начале вы искали Terms, а не Details . Скорее всего эта ссылка в другом фрейме
  • 0

#17 BillyAnn

BillyAnn

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

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Anna Bill
  • Город:Minsk

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


driver.switchTo().frame("canvas_frame");
System.out.println(this.isElementPresent(By.linkText("Details")));

Error! Element is not present!
false

Вот...=((((

Ну так в начале вы искали Terms, а не Details . Скорее всего эта ссылка в другом фрейме



this.isElementPresent(By.partialLinkText("Terms"))

дает тот же результат.
И кстати там был тот же фрейм. Я проверяла.
Что я могу делать не так?=(((
  • 0

#18 D2Phoenix

D2Phoenix

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

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


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

   driver.get( "http://www.gmail.com" );
                driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS );
                
                
                WebElement element = driver.findElement( By.id( "Email" ) );
                element.sendKeys( "vadim.chadyuk@gmail.com" );
                
                WebElement element2 = driver.findElement( By.id( "Passwd" ) );
                element2.sendKeys( "12345612345" );
                
                WebElement element3 = driver.findElement( By.id( "signIn" ) );
                element3.click();
                
                driver.switchTo().frame( "canvas_frame" );
                WebElement element4 = driver.findElement( By.linkText( "Условия            использования" ) );
                element4.click();
                Thread.sleep( 10000 );
                // Check the title of the page
                System.out.println( "Page title is: " + driver.getTitle() );
Запустите мой тест. Он у вас работает????
Update там идёт довольно таки долгая загрузка. Так что нужно включить имплицитные ожидания(возможно в этом дело)
  driver.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS );

  • 0


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

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