【问题标题】:How do I select an option inside an <li> tag using Selenium Webdriver in java?如何在 java 中使用 Selenium Webdriver 在 <li> 标记内选择一个选项?
【发布时间】:2018-03-27 15:21:22
【问题描述】:

我尝试使用 cssSelector 和 xpath,但找不到如何从列表中选择一个值。

r.driver.findElement(By.xpath("//div[contains(.,'DOLO -650')]"));
r.driver.findElement(By.className("ui-autocomplete ui-front ui-menu ui-widget ui-widget-content")).click(); 
List<WebElement> opt = r.driver.findElements(By.xpath("//ul[@class='ui-autocomplete ui-front ui-menu ui-widget ui-widget-content']/li")); 

for (WebElement options:opt) {
    if(options.getText().equals(opt)) {
        options.click(); return;
    } 
} 

WebElement dd = r.driver.findElement(By.id("ui-id-1")); dd.click(); 
dd.findElement(By.cssSelector("li[value="+ Product+"]")).click();
r.driver.findElement(By.cssSelector("li:nth-child(1).NoBulle‌​t.jms-bullet>")).cli‌​ck();
WebElement element = r.driver.findElement(By.name("DOLO -650")); 
element.sendKeys("DOLO -650"); 
element.submit(); 

<ul id="ui-id-1" class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content"> 
    <li id="ui-id-6" class="ui-menu-item">DOLO -120 60ML</li> 
    <li id="ui-id-7" class="ui-menu-item ui-state-focus">DOLO -650</li>
    <li id="ui-id-8" class="ui-menu-item">DOLO 100ML</li>
</ul>

【问题讨论】:

  • 到目前为止你尝试过什么?如果您可以分享stackoverflow.com/help/how-to-ask 中描述的代码示例,那就太好了
  • //1 r.driver.findElement(By.xpath("//div[contains(.,'DOLO -650')]"));
  • //2 r.driver.findElement(By.className("ui-autocomplete ui-front ui-menu ui-widget ui-widget-content")).click(); List opt = r.driver.findElements(By.xpath("//ul[@class='ui-autocomplete ui-front ui-menu ui-widget ui-widget-content']/li")); for (WebElement options:opt) { if(options.getText().equals(opt)) { options.click();返回; } }
  • //3 WebElement dd = r.driver.findElement(By.id("ui-id-1")); dd.click(); dd.findElement(By.cssSelector("li[value="+ Product+"]")).click();
  • //4 r.driver.findElement(By.cssSelector("li:nth-child(1).NoBullet.jms-bullet>")).click();

标签: java selenium


【解决方案1】:

您必须尝试以下代码来获取所有 li 元素并选择符合您期望的元素

List<WebElement> opt = driver.findElements(By.xpath("//ul[@id='ui-id-1']/li")); 

for(WebElement options:opt)
{
    if(option.getText().equals("DOLO -650")) 
    {
        options.click(); 
        break;
    }
}

【讨论】:

  • 显示此错误,org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"DOLO -650"} 命令持续时间或超时: 1.02 秒
  • 值 dolo 或确切的平板电脑名称是 excel 驱动的。我只需传递 dolo 并从使用 seelnium 显示的列表中选择值 dolo-650。
【解决方案2】:
WebElement autoOptions= driver.findElement(By.id("ui-id-1"));
autoOptions.sendKeys("DOLO");
List<WebElement> opt = driver.findElements(By.xpath("//ul[@class='ui-autocomplete ui-front ui-menu ui-widget ui-widget-content']/li")); 

for(WebElement option:opt)
{
    if(option.getText().equals("DOLO -650")) 
    {
        System.out.println(option);
        option.click(); 
        break;
    }
}

【讨论】:

  • 值 dolo 或确切的平板电脑名称是 excel 驱动的。我只需要传递值并选择值。
  • 然后在 sendKeys() 中输入您从 excel 中读取的值,而不是“DOLO”。如果您阅读 excel 详细信息并加载到变量(字符串),请在 sendKeys() 中提及字符串变量
  • @sharmee 首先检查上述代码是否正在运行,然后您可以修改代码以合并您的 excel 读取值。等
  • 它没有运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
相关资源
最近更新 更多