伙计们,我正在学习Selenium Automation。
我在下面设计了一个网站。
我的Html代码:
<!DOCTYPE html>
<html>
<head><title>Shop</title></head>
<body>
<ul>
<li><a href="www.rendertofruitsection.com">Fruits</a>
<ul>
<li><a href="www.addbananatocart.com">» Banana</a></li>
<li><a href="www.addappletocart.com">» Apple</a></li>
<!--List goes on-->
</ul>
</li>
<li><a href="www.redertovegsection">Vegetable</a>
<ul>
<li><a href="www.addcapcicumtocart">» Capsicum</a></li>
<li><a href="www.addtomatotocart.com">» Tomato</a></li>
<li><a href="www.addoniontocart">» Onion</a></li>
<!--List goes on-->
</ul>
</li>
<li><a herf="www.nonveglink.com">Non Veg Section</a></li>
<!--List goes on-->
</ul>
</body>
</html>
最初我计划使用java selenium列出<a>
标签内的所有文本。
所以我在下面写了这段代码。
我的Java代码:
public class shop
{
public static void main(String[] args)
{
WebDriver driver= new ChromeDriver();
driver.get("www.myshopping.com");
List<WebElement> text= driver.findElements(By.xpath("//a"));
for(int i=0;i<text.size();i++)
{
System.out.println(i+". "+text.get(i).getText());
}
}
}
输出我得到和需要的东西:
Output what I got: | Output What I need:
1. Fruits | 1. Fruits
2. | 2. Banana
3. | 3. Apple
4. Vegetable | 4. Vegetable
5. | 5. Capsicum
6. | 6. Tomato
7. | 7. Onion
8. Non Veg Section | 8. Non Veg Section
伙计们只是告诉我们如何使用Selenium Java获取内部<ul>
中的文本<li>
标签。
我尝试了一些什么,但我把它困在这里。请帮忙。
谢谢
要列出<a>
标签内显示的所有文本,您可以尝试以下代码块:
public class shop
{
public static void main(String[] args)
{
WebDriver driver= new ChromeDriver();
driver.get("www.myshopping.com");
List<WebElement> atags = driver.findElements(By.tagName("a"));
for(WebElement atag:atags)
System.out.println("Text is : " + atag.getAttribute("innerHTML"));
}
}
WebElement x = driver.findElement(By.xpath("xpathOfTheElement"));
String text = x.getAttribute("innerText");
System.out.println(text);
尝试为项类型应用外部循环,并为似乎动态生成的项添加内部循环:
public class shop
{
public static void main(String[] args)
{
WebDriver driver= new ChromeDriver();
driver.get("www.myshopping.com");
List<WebElement> text= driver.findElements(By.xpath("//li[ul]/a"));
for(int i=0;i<text.size();i++)
{
System.out.println(i+". "+text.get(i).getText());
WebDriverWait wait = new WebDriverWait(i, 10);
List<WebElement> innerText = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(".//following-sibling::ul//a[text()]")));
for(int j=0; j<text.size(); j++)
{
System.out.println(i+". "+j+". "+text.get(j).getText());
}
}
}
}
如果您只是指外部ul
内的项目,则按如下方式更改代码。这只是一个定位器的变化:
public static void main(String[] args) {
WebDriver driver= new FirefoxDriver();
driver.get("file:///C:/Users/abdul%20awal/Desktop/test.html");
List<WebElement> text= driver.findElements(By.cssSelector("ul ul a"));
for(int i=0;i<text.size();i++)
{
System.out.println(i+". "+text.get(i).getText());
}
}
对于CSS选择器参考,请点击链接: