当元素不在可见屏幕中时,无法处理该元素

时间:2015-12-16 10:54:23

标签: selenium selenium-webdriver selenium-chromedriver

当元素不在Visible屏幕中时,Selenium会抛出No Element found异常。仅当我使用Autoit或手动向下滚动页面时,它才有效。

即使目前我使用AutoIt向下滚动页面并找到元素,但我不这么认为,它适用于所有类型的分辨率屏幕。

Selenium版本:2.41.0 Chrome版本:47.0.2526.80

注意:我的应用仅适用于Chrome浏览器

请建议。

3 个答案:

答案 0 :(得分:1)

试试这个:

 INFO  web[org.sonar.INFO] Security realm: Crowd

 INFO  web[c.a.c.s.c.ClientPropertiesImpl] Loading property: 'application.name' : 'sonar'

 INFO  web[c.a.c.s.c.ClientPropertiesImpl] Failed to find value for property: application.login.url

 INFO  web[c.a.c.s.c.ClientPropertiesImpl] Loading property: 'session.tokenkey' : 'session.tokenkey'

 INFO  web[c.a.c.s.c.ClientPropertiesImpl] Loading property:
 'session.lastvalidation' : 'session.lastvalidation'

 INFO  web[c.a.c.s.c.ClientPropertiesImpl] Loading property: 'session.validationinterval' : '1'

 INFO  web[c.a.c.s.c.ClientPropertiesImpl] Failed to find value for property: cookie.domain

 INFO  web[o.s.p.c.CrowdRealm] Crowd configuration is valid, connection test successful.

 INFO  web[org.sonar.INFO] Security realm started

答案 1 :(得分:0)

请参阅,因为Selenium Webdriver尝试模拟真实用户,所以它无法与不可见/隐藏的元素进行交互。首先,您可以使用Actions移动到元素,然后只需检查元素的可见性,如下所示:

WebElement element = driver.findElement(By by);
Actions action = new Action(driver);
action.moveToElement(element).perform();
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOf(element)).WhateverActionYouWantToDoOnWebElement;

然后你可以执行你想要执行的任何动作。

答案 2 :(得分:0)

您可以尝试将您的元素放在页面的开头,例如在第一个可见的div中,使用jQuery使用hereprepend方法

$( ".div_class" ).prepend( $( "h2" ) ); 
//put the h2 element at the beginning of the div with class "div_class"

您可以详细了解here