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