Как да изберете радиобутон чрез анотация @FindBy в selenium webdriver

Докато проектираме клас обект на страница, ние използваме @FindBy(name="value") т.е. FindBy с име.

И така по-долу код за намиране на текстово поле на уеб страница като поле за потребителско име. @FindBy(name="username")

WebElement txtboxUname;

........//Вътре в тестовата функция наричаме това txtboxUname както по-долу

txtboxuname.sendKeys("purnendu");

И така, за обекта на страницата с радио бутон как го дефинираме чрез @FindBy??? Следният код не работи

@FindBy(name="radio")

List<WebElement> radioBtnSelectTrip;

.......повикване вътрешна функция

radioBtnSelectTrip.get(0).click();

Горната техника @FindBy не работи за бутона за избор. Можете ли да помогнете как да дефинирате radiobutton до @FindBy и да я използвате чрез Pagefactory


person purnendusekkhar rath    schedule 23.02.2015    source източник


Отговори (2)


Има няколко техники за UI картографиране. Докато използвате @FindBy за картографиране на UI елементи, е възможно да картографирате елемента с xpath. Искате обаче да сте сигурни, че xpath е правилен и връща само целта radio. Вижте пример как да намерите елемент с xpath тук

Разгледайте повече за Annotation Type FindBy тук

И,

@FindBy(name="radio")

List<WebElement> radioBtnSelectTrip;

няма да ви върне ЕДНО радио, а списък. За да извършите действие на конкретно радио, трябва да добавите допълнителен филтър. катоif условие за съответствие с уникален критерий на целевия бутон за избор.

Редактиране Добавен код за изследване как FindBy може да бъде приложен при намиране на конкретно радио

@FindBy(how = How.CSS, using = "[type='radio'][value='roundtrip']")
public WebElement roundTrip;

@FindBy(how = How.CSS, using = "[type='radio'][value='oneway']")
public WebElement oneWay;
person Saifur    schedule 23.02.2015
comment
@FindBy може да върне List: selenium.googlecode.com/git/docs/api/java/index.html?org/openqa/ - person SiKing; 23.02.2015
comment
@SiKing Аз също казвам да. - person Saifur; 23.02.2015
comment
OP допълнително уточни, че се обажда на radioBtnSelectTrip.get(0).click();. Така че не разбирам вашия допълнителен филтър коментар. - person SiKing; 23.02.2015
comment
@SiKing Питаш ме две различни неща. Знаете, че radioBtnSelectTrip.get(0).click(); не е задължително да върне елемента target, който OP може да иска. Това имах предвид, като добавих such as if condition to match a unique criteria on the target radio button и никога не съм казвал, че @FindBy няма да върне List - person Saifur; 23.02.2015

Имате правописна грешка. Ако искате да върнете радиобутон, вероятно искате да изберете от него type: @FindBy(xpath="//input[@type='radio']").

person SiKing    schedule 23.02.2015
comment
Благодаря много на Saifur и Siking за бързия отговор. - person purnendusekkhar rath; 24.02.2015
comment
‹td width=67%› ‹b› ‹font size=2 face=Arial, Helvetica, sans-serif› ‹input type=radio checked= value=roundtrip name=tripType/› Round Trip ‹input type=radio value=oneway name=tripType/› One Way ‹/font› ‹/b› ‹/td› - person purnendusekkhar rath; 24.02.2015
comment
по-горе е HTML описанието на бутона за избор на моята страница.. така че как мога да дефинирам чрез @FIndBy и как мога да получа достъп до бутона за избор в моя тест, моля, предоставете ми кода. - person purnendusekkhar rath; 24.02.2015
comment
@purnendusekkharrath Ако трябва да изясните въпроса си, не го поставяйте в коментарите. Редактирайте оригиналния си въпрос! - person SiKing; 24.02.2015