以下是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建议
答案 0 :(得分:1)
根据您的代码,您使用了以下定位器策略:
driver.findElements(By.xpath("//ul[@title='Select your size']//li"));
但是你看到的错误是:
org.openqa.selenium.NoSuchElementException: Unable to locate element
我在代码块中没有看到任何错误,但您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:
因此,当前 JDK 版本( 8u162 )与当前 Selenium客户端版本( v10)之间存在明显的不匹配。 0.0 的)
@Test
。答案 1 :(得分:1)
更改行:
for(int i=0;i<dd_menu.size();i++)
到
for(int i=1;i<dd_menu.size();i++)
根据您的错误消息,它正在尝试访问第一个列表项,该列表项实际上是一个隐藏条目(复选标记)。通过在零而不是一个循环开始循环,您将包括该列表项。如果其余代码正确,则跳过该项应该有效,或至少产生不同的错误。