使用Selenium java

时间:2018-03-11 07:55:26

标签: selenium automation dropdown

以下是bootstrap下拉代码。从下拉列表中选择任何值后,勾选标记'✓'也正在被选中。

<ul style="max-height:48px;margin:0px 0px 0px 0px;" aria-expanded="false" aria-activedescendant="item1520752761987-1" aria-label="Select your size" title="Select your size" role="listbox" tabindex="0">
    <li id="item1520752761987-1" class="selected" role="option" style="width: 52px;">
    --
    <span class="checked" aria-hidden="true"> ✓</span>
    </li>
    <li id="item1520752761987-2" role="option" data-value="248" style="width: 52px;">7</li>
    <li id="item1520752761987-3" role="option" data-value="304" style="width: 52px;">8</li>
    <li id="item1520752761987-4" role="option" data-value="306" style="width: 52px;">9</li>
    <li id="item1520752761987-5" role="option" data-value="278" style="width: 52px;">10</li>
    <li id="item1520752761987-6" role="option" data-value="280" style="width: 52px;">11</li>
    <li id="item1520752761987-7" role="option" data-value="282" style="width: 52px;">12</li>
    <li id="item1520752761987-8" role="option" data-value="284" style="width: 52px;">13</li>
    <li id="item1520752761987-9" role="option" data-value="285" style="width: 52px;">14</li>
    <li id="item1520752761987-10" role="option" data-value="286" style="width: 52px;">15</li>
    </ul>

无法从下拉列表中选择值。 下面是我使用的selenium Java代码。

List<WebElement> dd_menu=driver.findElements(By.xpath("//ul[@title='Select your size']//li"));
    for(int i=0;i<dd_menu.size();i++)
    {
        WebElement element=dd_menu.get(i);
        String val=element.getAttribute("innerHTML");
        if(val.contentEquals("11"))
        {
            element.click();
        }
        //System.out.println("Values From Dropdown : "+val);
    }

    driver.findElement(By.xpath(".//*[@id='product-addtocart-button']")).click();
}

上面用于点击bootstrap下拉列表的selenium java代码无效......我需要帮助

在下面的eclipse中获取错误消息:

org.openqa.selenium.NoSuchElementException:无法找到元素:{&#34;方法&#34;:&#34; xpath&#34;,&#34;选择器&#34;:&#34; //跨度[@class =&#39;检查&#39;] //父::的Li [@id =&#39; item1520579060429-1&#39;]&#34;} 命令持续时间或超时:48毫秒 有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html 构建信息:版本:&#39; 2.45.0&#39;,修订版:&#39; 32a636c&#39;,时间:&#39; 2015-03-05 22:01:35&#39; 系统信息:主机:&#39; VG-IT-LAP-104&#39;,ip:&#39; 192.168.1.100&#39;,os.name:&#39; Windows 8.1&#39;,os .arch:&#39; amd64&#39;,os.version:&#39; 6.3&#39;,java.version:&#39; 1.7.0_79&#39; ***元素信息:{使用= xpath,值= // span [@class =&#39;选中&#39;] // parent :: li [@id =&#39; item1520579060429-1&#39;] } 会议ID:2ca11707-7e86-4811-a76b-b7461d3dfb92 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform = WINDOWS,acceptSslCerts = true,javascriptEnabled = true,cssSelectorsEnabled = true,databaseEnabled = true,browserName = firefox,handlesAlerts = true,nativeEvents = true,webStorageEnabled = true,rotating = false,locationContextEnabled = true,applicationCacheEnabled = true ,takeScreenshot = true,version = 33.0.3}]

尝试了下面给出的动态xpath的不同组合,但仍然不起作用:

//li[contains(@id,'item1520491614103-8')]//following::span[@class='checked']
//li[contains(.,'13')]
//span[@class='checked']//parent::li[@id='item1520579060429-1']

你能指导我出错的地方..如果我的xpath不正确,从下拉列表中选择任何值。请用正确的xpath建议

2 个答案:

答案 0 :(得分:1)

根据您的代码,您使用了以下定位器策略

driver.findElements(By.xpath("//ul[@title='Select your size']//li"));

但是你看到的错误是:

org.openqa.selenium.NoSuchElementException: Unable to locate element

我在代码块中没有看到任何错误,但您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

  • 您的 Selenium客户端版本 2.45.0 2015-03-05 22:01:35 3年年长。
  • 您的 JDK版 1.7.0_79 古代

因此,当前 JDK 版本( 8u162 )与当前 Selenium客户端版本( v10)之间存在明显的不匹配。 0.0 的)

解决方案

  • ChromeDriver 升级到JDK 8u162级别。
  • Selenium客户端升级到10.0.0级别。
  • 清除您的项目工作区重建您的项目仅具有所需的依赖项。
  • 使用CCleaner工具清除执行测试套件之前和之后的所有操作系统杂务。
  • 如果您的基本 Web浏览器版本太旧,请通过Revo Uninstaller将其卸载并安装最新的GA和发布的 Web浏览器版本。< / LI>
  • 执行@Test

答案 1 :(得分:1)

更改行:

for(int i=0;i<dd_menu.size();i++)

for(int i=1;i<dd_menu.size();i++)

根据您的错误消息,它正在尝试访问第一个列表项,该列表项实际上是一个隐藏条目(复选标记)。通过在零而不是一个循环开始循环,您将包括该列表项。如果其余代码正确,则跳过该项应该有效,或至少产生不同的错误。