2014-10-01 53 views
1

我使用示例站点Redbus.in网站,我需要选择随机旅行复选框。 我可以得到复选框的数量,并且我已经编码来选择随机复选框。但是,选择随机复选框时会发生以下异常。如果随机数位于4之内,则在点击移动下拉菜单时,将首先看到4个项目被选中。如果随机数字位于中间项目或最后一个项目中,则隐藏,因此发生ElementNotVisibleException 。如何滚动下拉菜单并使用selenium webdriver选择不可见/隐藏元素?

,我已经选择随机复选框编写的代码,

public class RedBus 
{ 
public static void main (String args[]) 
{ 

driver.findElement(By.cssSelector("a.dpBtn")).click(); 
Random r=new Random(); 
WebElement boxes=driver.findElement(By.xpath("//div[@class='filter Travels opened']")); 
List<WebElement> checkBoxes=boxes.findElements(By.xpath("//input[@type='checkbox']")); 
int no=checkBoxes.size(); 
System.out.println(no); 
WebElement Check=checkBoxes.get(r.nextInt(checkBoxes.size())); 
System.out.println(Check); 
Check.click(); 
} 

异常线程“main” org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互 命令持续时间或超时:10.04秒 生成信息:版本:“2.39.0”,修订版:“ff23eac”,时间:“2013年12月16日16点十一分15秒” 系统信息:主机:“Dhivya”, ip:'192.168.1.2',os.name:'Windows 7',os.arch:'x86',os.version:'6.1',java.version:'1.7.0_10' 会话ID:32793b83 -0e45-446c-bf8d-7cd1a30c2dbf 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver 功能[{platform = XP,acceptSslCerts = true,javascriptEnabled = true,cssSelectorsEnabled = true,databaseEnabled = true,browserName = firefox,handlesAlerts = true,browserConnectionEnabled = true,webStorageEnabled = true,nativeEvents = false,rotate = false,locationContextEnabled = true,applicationCacheEnabled = true,takesScreenshot = true,version = 30.0}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.openqa.selenium.remote。 ErrorHandler.createThro wable(ErrorHandler.java:193) 在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) 在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554) 在org.openqa.selenium.remote:org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268) 在org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:79) 所致。 ErrorHandler $ UnknownServerException:元素当前不可见,因此可能不会与之互动

请有人建议我吗?

回答

0

我认为这将帮助你:

WebElement Check;  
for(int i = 0; i < no; i++) 
{ 
    System.out.println(no); 
    Check = checkBoxes.get(r.nextInt(no)); 
    if(Check.isDisplayed()) 
    { 
     Check.click(); 
    } 
} 

你也可以这样做:

WebElement Check;  
for(int i = 0; i < no; i++) 
{ 
    System.out.println(no); 
    Check = checkBoxes.get(r.nextInt(no)); 
    if(Check.isDisplayed() && Check.isEnabled()) 
    { 
     Check.click(); 
    } 
} 
相关问题