如何使用WebDriver Java查找活动li选项卡

如何使用WebDriver Java查找活动li选项卡,java,testing,selenium,webdriver,Java,Testing,Selenium,Webdriver,当我运行测试时,我想确定页面上是否选择了正确的类别(bn)并处于活动状态。这是由完成的。在我的测试数据中,我拥有与每个类别匹配的所有产品,因此我知道该选项卡何时应处于活动状态,但我不知道如何正确断言这一点。谁能帮我找到正确的方向吗?:) 以下是HTML代码: <div class="tabs"> <h3><span>Hovedkategorier</span></h3> <div class="content"&g

当我运行测试时,我想确定页面上是否选择了正确的类别(bn)并处于活动状态。这是由
  • 完成的。在我的测试数据中,我拥有与每个类别匹配的所有产品,因此我知道该选项卡何时应处于活动状态,但我不知道如何正确断言这一点。谁能帮我找到正确的方向吗?:)

    以下是HTML代码:

    <div class="tabs">
        <h3><span>Hovedkategorier</span></h3>
        <div class="content">
          <ul class="shortcuts">
            <li><a href=""><span class="one"><span class="two">Text 1</span></span></a></li>
            <li class="last"><a href="?tag=weekly1"><span class="one"><span class="two">Text 2</span></span></a></li>
          </ul>
          <ul class="main">
            <li><a href="?bn=10000"><span class="one"><span class="two">Text 3</span></span></a></li>
            <li><a href="?bn=10306"><span class="one"><span class="two">Text 4</span></span></a></li>
            <li><a href="?bn=10723"><span class="one"><span class="two">Text 5</span></span></a></li>
            <li class="active"><a href="?bn=10719"><span class="one"><span class="two">Text 6</span></span></a></li>
            <li><a href="?bn=10190"><span class="one"><span class="two">Text 7</span></span></a></li>
            <li><a href="?bn=10444"><span class="one"><span class="two">Text 8</span></span></a></li>
            <li><a href="?bn=10431"><span class="one"><span class="two">Text 9</span></span></a></li>
            <li class="last"><a href="?bn=10560"><span class="one"><span class="two">Text 10</span></span></a></li>
          </ul>
        </div>
      </div>
    
    
    霍维德卡泰戈里埃酒店
    

    考虑选择您的元素,如下所示:

    List<WebElement> activeListElements = driver.findElements(By.className("active"));
    

    不确定我是否正确理解了您,我的理解是您知道
    Text 6
    href=“?bn=10719”
    应该是活动选项卡。因此,您可以使用text或href找到它,然后检查它的父级
  • 标记是否确实有class
    活动

    // using text is not applicable in your case, as they will be in different languages.
    // WebElement tab = driver.findElements(By.xpath("//a[text()='Text 6']/.."));
    
    int number = 10719;
    WebElement liActive = driver.findElement(By.xpath(".//a[@href='?bn=" + number + "']/..")); // use '/..' to get <a>'s parent, which is the <li> 
    String classNames = liActive.getAttribute("class");
    
    // using whatever testing framework you prefer
    // assert true that
    // classNames.toLowerCase().contains("active")
    
    // if you are sure that active will be the only class for li, you can check equality
    // classNames.toLowerCase().Equals("active")
    
    //使用文本不适用于您的情况,因为它们将使用不同的语言。
    //WebElement选项卡=driver.findElements(By.xpath(//a[text()='text 6']/..);
    整数=10719;
    WebElement liActive=driver.findelelement(By.xpath(“../a[@href=”?bn=“+number+”]/);//使用“/…”获取的父项,即
  • 字符串classNames=liActive.getAttribute(“类”); //使用您喜欢的任何测试框架 //断言 //classNames.toLowerCase()包含(“活动”) //如果确定active将是li的唯一类,则可以检查是否相等 //classNames.toLowerCase().Equals(“活动”)
  • 是的!但是如何将活动li连接到
  • assertEquals(“?bn=10000”,getTheBnFromActiveLiClass)”之后的href链接的类别
    Aha!我不知道文本6,也不想知道,因为这个网页有4种不同的语言。但是我想我可以修改它,这样我就可以使用a href属性i代替text()?我知道链接中的bn号码,所以这对我来说是最简单的方法。谢谢!今天晚些时候我会尝试一下,并给您一个更新:)
    String url = element.getAttribute("href");
    assertThat(url, is("?bn=10000")); // for recent JUnit 4.x versions
    assertEquals("?bn=10000", url); // for older versions of JUnit
    
    // using text is not applicable in your case, as they will be in different languages.
    // WebElement tab = driver.findElements(By.xpath("//a[text()='Text 6']/.."));
    
    int number = 10719;
    WebElement liActive = driver.findElement(By.xpath(".//a[@href='?bn=" + number + "']/..")); // use '/..' to get <a>'s parent, which is the <li> 
    String classNames = liActive.getAttribute("class");
    
    // using whatever testing framework you prefer
    // assert true that
    // classNames.toLowerCase().contains("active")
    
    // if you are sure that active will be the only class for li, you can check equality
    // classNames.toLowerCase().Equals("active")