【问题标题】:How to scroll the dropdown and select the invisible/hidden element using selenium webdriver?如何滚动下拉菜单并使用 selenium webdriver 选择不可见/隐藏元素?
【发布时间】:2014-11-26 13:12:09
【问题描述】:

我正在使用示例站点 Redbus.in 站点,我需要在其中选中随机旅行复选框。 我可以获得复选框的计数,并且我已经编码以选择随机复选框。但是,选择随机复选框时会发生以下异常。单击旅行下拉菜单时,如果随机数在 4 以内,则选择第一个可见的 4 个项目。如果随机数在中间或最后一个项目中,则这些项目被隐藏,因此发生 ElementNotVisibleException .

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

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

线程“主”org.openqa.selenium.ElementNotVisibleException 中的异常:元素当前不可见,因此可能无法与之交互 命令持续时间或超时:10.04 秒 构建信息:版本:'2.39.0',修订:'ff23eac',时间:'2013-12-16 16:11: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,rotatable=false,locationContextEnabled=true ,applicationCacheEnabled=true,takeScreenshot=true,版本=30.0}] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知来源) 在 java.lang.reflect.Constructor.newInstance(未知来源) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(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.RemoteWebElement.execute(RemoteWebElement.java:268) 在 org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:79) 原因:org.openqa.selenium.remote.ErrorHandler$UnknownServerException:元素当前不可见,因此可能无法与之交互

请任何人推荐我?

【问题讨论】:

    标签: java selenium


    【解决方案1】:

    我在下面尝试过,它在 C# 中对我来说效果很好:

      //click the drop down list 
      IWebElement entityList = driver.FindElement(By.XPath("//input[@id='cbOrganisations_Input']")); 
      entityList.Click();
      //find the invisible element on the list by xpath/id/tag etc. 
      IWebElement selectEnityName = driver.FindElement(By.XPath("//li[@class='rcbItem'][contains(text(),'Manish Test Org')]"));
      //use javascript to  navigate to that element
      (IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", selectEnityName);
      //use javascript to click that element on the list
      ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", selectEnityName);
    

    【讨论】:

      【解决方案2】:

      我想这会对你有所帮助:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        • 2013-12-20
        • 2019-02-25
        • 1970-01-01
        • 2012-09-05
        • 2015-10-21
        • 2017-10-29
        相关资源
        最近更新 更多