开发者

Getting Webdriver ElementNotVisibleException when I try to click on a hyperlink

I开发者_如何学运维 am trying to click on a link using webdriver but it throws me a ElementNotVisibleException saying "Element is not currently visible and so may not be interacted with"

My WebDriver code:

addProgram.click();

addProgram refers to an anchor element. This is populated by annotating @FindBy(how= How.LINK_TEXT, using="Add Program"). In other words it is similar to driver.findElement(By.linkText("Add Program")).

My HTML is:

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

It starts working when I remove the css declaration from the above div. The dive has a hover style, may be that is the one causing the problem.

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;
}

I have trawled the web trying to find a solution but none has worked. Any suggestions/help is greatly appreciated.

Thanks, Chris.


(UPDATE) This issue was resolved and should be available since Selenium 2.4.0

Sounds like you ran into the same bug as I did:

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

the work-around is to get the element inside the link and click.

re-writing your code:

driver.findElement(By.linkText("Add Program")).findElementBy(By.tagName("span"))


I just solve this error while using capybara in ror project by add " Capybara.ignore_elements = true " to features/support/env.rb


Working from @Zernel's solution, the following solves for ror project using capybara.

Add Capybara.ignore_hidden_elements = true to the file config/environments/test.rb


Using texts is not always the good methodology.

Try this:

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

Always Use CSS, It performs better than XPath.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜