Получение Webdriver ElementNotVisibleException при попытке нажать на гиперссылку - PullRequest
2 голосов
/ 25 мая 2011

Я пытаюсь щелкнуть ссылку с помощью веб-драйвера, но при этом возникает сообщение об исключении ElementNotVisibleException, в котором говорится, что «элемент в данный момент не виден и поэтому не может взаимодействовать с»

Мой код WebDriver:

addProgram.click();

addProgram ссылается на элемент привязки.Это заполняется аннотированием @FindBy (how = How.LINK_TEXT, используя = "Добавить программу").Другими словами, это похоже на driver.findElement (By.linkText («Добавить программу»)).

Мой HTML-код:

<div class="form_btn">
<a href="/program/addProgram">   
<span>Addrogram</span
</a>
</div>

Он начинает работать, когда я удаляю объявление css из приведенного выше div.У погружения есть стиль наведения, возможно, именно он и вызывает проблему.

CSS:

.form_btn { 
    float:left; 
background:url(/bg_button_right.gif) no-repeat scroll top     
    right; 
color: #fff; 
display: block; 
height:22px; 
font: bold 10px arial; 
margin-right: 0px; 
margin-top:2px; 
padding-right: 4px; /* sliding doors padding */ 
text-decoration: none; 
}

.form_btn span { 
background:url(/assets/images/provider/bg_button_left.gif) no-repeat; 
display: block; 
float:left; 
line-height:18px; 
padding: 2px 5px 5px 10px; 
font-size:11px; 
}

.form_btn a{ 
color:#fff;
}

.form_btn a:hover{ 
color:#fff; 
text-decoration:none; 
cursor:hand;
}

Я пытался найти решение в сети, но ни одно из них не помогло.Любые предложения / помощь с благодарностью.

Спасибо, Крис.

Ответы [ 4 ]

2 голосов
/ 26 мая 2011

(ОБНОВЛЕНИЕ) Эта проблема была решена и должна быть доступна с Selenium 2.4.0

Похоже, вы столкнулись с той же ошибкой, что и я:

http://code.google.com/p/selenium/issues/detail?id=1445

Обходной путь - получить элемент внутри ссылки и щелкнуть.

переписать ваш код:

driver.findElement(By.linkText("Add Program")).findElementBy(By.tagName("span"))
1 голос
/ 01 декабря 2011

Я просто исправляю эту ошибку при использовании капибары в проекте ror, добавив «Capybara.ignore_elements = true» в features / support / env.rb

0 голосов
/ 02 апреля 2014

Использование текстов не всегда хорошая методология.

Попробуйте это:

driver.findElement(By.cssSelector("div.form_btn > a[href*='addProgram'] > span")).click();

Всегда используйте CSS, он работает лучше, чем XPath.

0 голосов
/ 03 августа 2012

Используя решение @ Zernel, следующие решения для проекта ror с использованием капибары

Добавить Capybara.ignore_hidden_elements = true в файл config/environments/test.rb

...