Selenium WebDriver Firefox Java - не могу выбрать опцию - PullRequest
1 голос
/ 06 июля 2011

У меня очень странная проблема.Используя селен, я пишу простой веб-бот, чтобы заполнить страницу данными, отправить их и собрать результаты.

Я заполняю все формы без проблем, но сначала мне нужно ввести почтовый индекс,чем щелкнуть где-нибудь еще для AJAX, чтобы перечислить все возможности, затем выбрать собственную опцию (я хочу всегда выбирать первую).

Но моя проблема в том, что я просто не могу выбрать ее.Я заполняю ZIP, сам щелкаю по списку опций, жду, чтобы "пожалуйста, выберите" сообщение, чтобы потеряться (к этому времени мой выбор уже должен быть там) и затем выбираю его.Я пробовал option.click (), я пробовал selectByVisibleText (), даже не рекомендовал setSelected ().Каждый раз ничего не происходит.Все, что я вижу в FF, это выпадающий список опций, с первой пометкой, но это все.Я пробовал много способов, но безуспешно.

Вот мой код последней попытки:

ZIPCode = driver.findElement(By.id("formparam_data2_zip")); //get and fill ZIP
ZIPCode.sendKeys(ZIP);
address = driver.findElement(By.name("formparam_data2_zip_id")); // click to fire AJAX
address.click();
(new WebDriverWait(driver, 20)).until(new ExpectedCondition<Boolean>() { 
public Boolean apply(WebDriver d) {                    // wait until AJAX shows results
WebElement elm = d.findElement(By.id("formparam_data2_zip_id"));
List<WebElement> options = elm.findElements(By.tagName("option"));
for(WebElement w : options){
if(w.getText() != "Prosím, vyberte."){
return true;
}}
return false;
}});
List<WebElement> options = address.findElements(By.tagName("option"));   
options.get(0).click(); // click first option - ! this failes  !
phaseTwoBtn = driver.findElement(By.id("formparam_data2_next")); // than submit...
phaseTwoBtn.submit();

Ответы [ 4 ]

1 голос
/ 28 августа 2014

У меня была похожая проблема, и у меня были лучшие результаты при использовании класса Actions, а затем при использовании метода moveToElement () перед тем, как щелкнуть по нему.

Actions builder = new Actions(d);


builder.moveToElement(options.get(0)));
builder.click();
builder.build().perform();

Метод moveToElement гарантирует, что элемент находится ввидимое окно

0 голосов
/ 06 июля 2011

Пожалуйста, посмотрите на эту тему ...

0 голосов
/ 29 сентября 2013

Используя клавиши на клавиатуре, мы можем решить эту проблему с помощью веб-драйвера селена. Код для приведенного выше примера ZIPCode.sendkeys (ZIP); ZIPCode.sendkeys (Keys.Tab); ZIPCode.sendkeys (Keys.Return);

0 голосов
/ 06 июля 2011

попробуйте

if (! W.getText (). Equals ("Prosím, vyberte.")) {Return true;}

...