Драйвер не может найти элемент defaultCurrency по xpath.!

Драйвер не может найти элемент defaultCurrency по xpath.

Ошибка - «org.openqa.selenium.ElementNotVisibleException: элемент в настоящее время не виден, поэтому с ним нельзя взаимодействовать».

Код:

driver.findElement(By.xpath("//[@id='currency']/fieldset[2]/table/tbody/tr[1]/td[2]")).click();

WebElement defaultCurrency = driver.findElement(By.xpath(".//*[@id='defaultCurrency']"));

Select defaultCurrency_Select = new Select(defaultCurrency); defaultCurrency_Select.selectByVisibleText("USD");

Исходный код:

<td>
    <select id="defaultCurrency" class="validate[required]" onchange="javascript:clrErrors()" style="height:25px;width:160px;" name="defCurrency.defaultCurrency">    
        <option value="">Select Currency..</option>
        <option value="INR">GBP</option>
        <option value="EUR">EUR</option>
        <option value="USD">USD</option>
    </select>
</td>

person user1679515    schedule 13.11.2012    source источник
comment
У меня работает нормально. Вы уверены, что нет другого кода, взаимодействующего с этим select? Любой javascript или CSS, который скрывает или показывает его в зависимости от действий пользователя? Виден ли он при загрузке страницы или вам нужно что-то сделать на странице, чтобы он появился?   -  person Arran    schedule 13.11.2012


Ответы (2)


WebDriver генерирует исключение ElementNotVisibleException только тогда, когда элемент не виден. Поэтому взгляните на элемент (например, через Firebug) и отметьте, какой элемент активирует его, чтобы он был видимым. Затем попробуйте активировать первый элемент, а затем воздействовать на нужный. Или, может быть, элемент спроектирован так, чтобы быть невидимым в этот конкретный момент, поэтому вам не должно быть разрешено выполнять над ним какие-либо действия.

person Ioan    schedule 13.11.2012

Использовать это

Select currency = new Select(driver.findElement(By.cssSelector("Select[id="defaultCurrency"]")));
person bugCracker    schedule 09.07.2013