使用 Selenium 和 Java 自动化基于 jQuery 的引导下拉

Automating jQuery based bootstrap dropdown using Selenium and Java(使用 Selenium 和 Java 自动化基于 jQuery 的引导下拉菜单)
本文介绍了使用 Selenium 和 Java 自动化基于 jQuery 的引导下拉菜单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从引导下拉列表中列出所有元素,然后选择某个值.但是,它返回 0 值.任何建议将不胜感激.

I am trying to list all elements from the bootstrap dropdown and then select a certain value. However, it returns 0 values. Any suggestions will be greatly appreciated.

driver.findElement(By.id("imgSelectButton")).click();
Thread.sleep(3000);
List<WebElement> list = driver.findElements(By.xpath("//ul/li[@class='logoSelectOpt']//li"));
System.out.println(list.size());
for(int i=0; i<list.size(); i++){
    System.out.println(list.get(i).getText());
    if (list.get(i).getText().contains("History")){
        list.get(i).click();
        break;
    }
}

DOM:

<div class="logoSelect" style="z-index:1; top:878px;">==$0
 <ul>
  <li class="logoSelectOpt" id="12" onmouseover="jQuery(QWE01Title.activate(this);" onmouseout="jQuery(QWE01Title.deactivate(this);" onmousedown="jQuery(QWE01Title.selectItem(this);" logoColor="#FFF">Facts</li>==0
  <li class="logoSelectOpt" id="12" onmouseover="jQuery(QWE01Title.activate(this);" onmouseout="jQuery(QWE01Title.deactivate(this);" onmousedown="jQuery(QWE01Title.selectItem(this);" logoColor="#FFF">History</li>==0
  <li class="logoSelectOpt" id="12" onmouseover="jQuery(QWE01Title.activate(this);" onmouseout="jQuery(QWE01Title.deactivate(this);" onmousedown="jQuery(QWE01Title.selectItem(this);" logoColor="#FFF">Opinions</li>==0
  <li class="logoSelectOpt" id="12" onmouseover="jQuery(QWE01Title.activate(this);" onmouseout="jQuery(QWE01Title.deactivate(this);" onmousedown="jQuery(QWE01Title.selectItem(this);" logoColor="#FFF">Questions</li>==0
 </ul>
</div>

推荐答案

元素是 jQuery 启用元素所以找到您必须为 visibilityOfAllElementsLocatedBy() 诱导 WebDriverWait 的元素,您可以使用以下任一 定位器策略:

The elements are jQuery enabled element so to locate the elements you have to induce WebDriverWait for the visibilityOfAllElementsLocatedBy() and you can use either of the following Locator Strategies:

  • 使用cssSelector:

driver.findElement(By.id("imgSelectButton")).click();
List<WebElement> list = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div.logoSelect > ul li.logoSelectOpt")));
System.out.println(list.size());
for(int i=0; i<list.size(); i++){
    System.out.println(list.get(i).getText());
    if (list.get(i).getText().contains("History")){
        list.get(i).click();
        break;
    }
}

  • 使用xpath:

    driver.findElement(By.id("imgSelectButton")).click();
    List<WebElement> list = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[@class='logoSelect']/ul//li[@class='logoSelectOpt']")));
    System.out.println(list.size());
    for(int i=0; i<list.size(); i++){
        System.out.println(list.get(i).getText());
        if (list.get(i).getText().contains("History")){
            list.get(i).click();
            break;
        }
    }
    

  • 这篇关于使用 Selenium 和 Java 自动化基于 jQuery 的引导下拉菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

    本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

    相关文档推荐

    How can create a producer using Spring Cloud Kafka Stream 3.1(如何使用Spring Cloud Kafka Stream 3.1创建制片人)
    Insert a position in a linked list Java(在链接列表中插入位置Java)
    Did I write this constructor properly?(我是否正确地编写了这个构造函数?)
    Head value set to null but tail value still gets displayed(Head值设置为空,但仍显示Tail值)
    printing nodes from a singly-linked list(打印单链接列表中的节点)
    Control namespace prefixes in web services?(控制Web服务中的命名空间前缀?)