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

Фотография

Как выбрать нужный елемент

WebDriver Selenium

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

#1 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 07:27

Делаю описание страницы и хочу сделать выбор типа документа универсальным, чтобы можно было выбирать всегда  radiobutton который начинается на ПН.
Выбирать 4(3)radiobutton вариант не подходит т.к. у разных пользователей разный порядок, хотелось бы как то реализовать поиск по части значения ПН в похожей ситуации ранее делал вот так(css = "input[id^='ЗП_']")
но там код другой был. 
 
<tbody class="passengerTbody">
           <tr style="line-height: 1.8">
               <td colspan="2" style="line-height: 1.4;">
                   <input type="checkbox" checked="checked" disabled="disabled" style="margin-bottom: 2px;">
                   Qualintinov V. A.
 
/ <span id="profileSelectedPassportNumber">999988877</span>
 
                   <br>
 
 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="98789700879" name="passport6901898531">
ЗЗ: 98789700879<br>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="999988877" name="passport6901898531" checked="checked">
ЗП: 999988877<br>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="12541254125" name="passport6901898531">
ЗЗ: 12541254125<br>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" class="changepasspass" bookingid="31" profileid="69018985" docnumber="1231231231" name="passport6901898531">
ПН: 1231231231<br>
 
 
                   
<br>
 

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

  • Прикрепленный файл  1112222.PNG   5,95К   0 Количество загрузок:

  • 0

#2 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 марта 2016 - 07:40

xpath
//input[type='radio'][contains(text,'ПН:')]

  • 0

#3 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 07:44

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает


  • 0

#4 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 07:46

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?


  • 0

#5 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 07:50

xpath
//input[type='radio'][contains(text,'ПН:')]
*** Element info: {Using=xpath, value=//input[type='radio'][contains(text,'ПН:')]}
 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:500)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355)
at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
at com.sun.proxy.$Proxy6.click(Unknown Source)
at main.AeroPutTest.aeroTravellerRoundtripSainpetersburgEkatPriceEconom(AeroPutTest.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
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:767)
at org.testng.TestRunner.run(TestRunner.java:617)
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:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
at org.testng.TestNG.run(TestNG.java:1031)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
 
 
вот что выдал

  • 0

#6 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 марта 2016 - 07:58

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?

 

да, xpath не правильный)

если я правильно понял, что ты имеешь ввиду, то вот так

//input[@docnumber='1231231231']

но это снова xpath


  • 0

#7 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 08:09

 

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?

 

да, xpath не правильный)

если я правильно понял, что ты имеешь ввиду, то вот так

//input[@docnumber='1231231231']

но это снова xpath

 

тут он будет выбирать по конкретному номеру документа, нужно чтобы в коде не был указан номер документа чтобы я мог его универсально использовать для разных тестов


  • 0

#8 Snap

Snap

    Специалист

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


Отправлено 16 марта 2016 - 08:14

xpath
//input[type='radio'][contains(text,'ПН:')]

Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.


  • 0

#9 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 08:30

 

xpath
//input[type='radio'][contains(text,'ПН:')]

Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.

 

*** Element info: {Using=xpath, value=//input[type='radio'][contains(text,'ПН:')]}

тоже не подходит(


  • 0

#10 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 марта 2016 - 08:35

 

xpath
//input[type='radio'][contains(text,'ПН:')]

Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.

 

а в третьих нет @ перед аттрибутом. Спасибо.

 

 

 

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?

 

да, xpath не правильный)

если я правильно понял, что ты имеешь ввиду, то вот так

//input[@docnumber='1231231231']

но это снова xpath

 

тут он будет выбирать по конкретному номеру документа, нужно чтобы в коде не был указан номер документа чтобы я мог его универсально использовать для разных тестов

 

не очень понял. ну подтяни из базы номер документа и подставляй в xpath.

Ты этот докнамбер сам создаешь же через UI ?


  • 0

#11 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 08:44

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

Ага, неправильный. Во-первых, нужны скобки после text(), во-вторых, input не содержит текста в данном случае.

 

а в третьих нет @ перед аттрибутом. Спасибо.

 

 

 

 

 

xpath
//input[type='radio'][contains(text,'ПН:')]

не работает

 

а как то приравнять поиск по ID  в поиск по docnumber и передавать в него нужный мне номер возможно?

 

да, xpath не правильный)

если я правильно понял, что ты имеешь ввиду, то вот так

//input[@docnumber='1231231231']

но это снова xpath

 

тут он будет выбирать по конкретному номеру документа, нужно чтобы в коде не был указан номер документа чтобы я мог его универсально использовать для разных тестов

 

не очень понял. ну подтяни из базы номер документа и подставляй в xpath.

Ты этот докнамбер сам создаешь же через UI ?

 

@FindBy (xpath = "//input[@docnumber='1231231231']")
WebElement changeDocument; // выбор документа

 

он так находит этот вариант я знал, но я не знаю как в данном случае сделать то что после знака "=" переменной

docnumber создается когда я создаю паспорт пользователю, паспорта у тестового пользователя я знаю но я хотел сделать метод в который при написании теста я мог бы передать любые цифры вот так так

 bookingCart.changeDocument(номер нужного документа).click(); я понимаю что так можно делать с полем ввода и как это сделать с полем ввода я знаю, а можно как либо сделать это именно с поиском Элемента?


  • 0

#12 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 08:50

Например метод в который я передаю данные вот так выглядит.

public void otkudaKuda(String otkuda, String kuda){
departure.sendKeys(otkuda);
wait.until(ExpectedConditions.elementToBeClickable(dropListotkuda));
dropListotkuda.click();
arrival.sendKeys(kuda);
wait.until(ExpectedConditions.elementToBeClickable(dropListKuda)).click(); 

 как то по аналогии с этим можно передавать в поиск Элемента данные?


  • 0

#13 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 марта 2016 - 08:51

doc_num = "123"
doc_num_search_xpath = "//input[@docnumber='" + doc_num + "']"

  • 0

#14 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 08:58

doc_num = "123"
doc_num_search_xpath = "//input[@docnumber='" + doc_num + "']"

а можешь целиком метод описать ? я не совсем понимаю где это писать.

 

 

вот мой код

 

ublic class BookingCart extends FirstClasss {
public BookingCart(WebDriver driver) {
super(driver);}

 

вот тут нужно создать??? (

private String docnum;
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']")
WebElement changeDocument; // выбор документа

 

я ведь не могу просто переменную создать она будет ругаться

attribute value must be constant


  • 0

#15 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 марта 2016 - 09:02

String doc_num = "1231231231";
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']")
WebElement changeDocument; // выбор документа

  • 0

#16 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 09:06

String doc_num = "1231231231";
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']")
WebElement changeDocument; // выбор документа

я ведь не могу просто переменную создать она будет ругаться

attribute value must be constant


  • 0

#17 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 марта 2016 - 09:13

почему это ты не можешь ?

в тобой приведенном коде ,кстати, имена переменных разные (docnum,doc_num).

И где ты обьявляешь значение переменной ?


  • 0

#18 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 09:19

вот

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

  • Прикрепленный файл  33333333.jpg   23,8К   0 Количество загрузок:

  • 0

#19 thepauloo89

thepauloo89

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

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Паша
  • Город:Москва


Отправлено 16 марта 2016 - 09:24

package main;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

/**
* Created by thepauloo89 on 15.03.2016.
*/
public class BookingCart extends FirstClass  {

public BookingCart(WebDriver driver) {
super(driver);}

String doc_num = "1231231231";
@FindBy (xpath = "//input[@docnumber='" + doc_num + "']") // вот это он подчеркивает и пишет attribute value must be constant
WebElement changeDocument; // выбор документа

}


  • 0

#20 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 марта 2016 - 09:38

попробуй так

String doc_num = "1231231231";
String doc_num_xpath = "//input[@docnumber='" + doc_num + "']")
driver.findElement(By.xpath(doc_num_xpath));

  • 1



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

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

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