我有一个HTML代码:
<div class="b7bd16b0909896b5">
<h3 class="ccd4e6086468523f">PastaMania</h3>
这是我的代码:
List<WebElement> restaurants =
driver.findElements(By.className("ccd4e6086468523f"));
for (WebElement restaurant: restaurants) {
System.out.println(restaurant.getText());
}
我想获得文本“PastaMania”,但我不断获得“占位符”。谁知道什么是错的?
更多html代码:outerHTML
答案 0 :(得分:0)
根据给出的信息,不清楚这个className是否是唯一的,并且@DebanjanB已经声明这个类名可能是动态的,因此将它用作H3元素的定位器并不是一个好主意。
您可以使用以下代码:
driver.findElements(By.xPath("//ol/li//h3"));
可能需要一些明确的等待,直到h3元素可见为止。
我检查了一个C#变种,它给出了正确的结果。在最终的代码中,Thread.Sleep必须被更优雅的等待机制所取代。
结果:
public void TestDeliveroo()
{
Driver.Url = "https://deliveroo.com.sg/restaurants/singapore/chinatown?postcode=069535&preselected_tag=1&tags=guilty+pleasures";
Thread.Sleep(10000);
IList<IWebElement> restaurants =
Driver.FindElements(By.XPath("//ol/li//h3"));
foreach (var restaurant in restaurants)
{
Console.WriteLine(restaurant.Text);
}
}
给出这个输出:
Potato Head Keong Saik的三个小圆面包 葡萄酒连接奶酪吧 肉史密斯 烤箱炸鸡 两个模糊的人 Fatboy的The Burger Bar BERGS L'EntrecôteTheSteak&amp; Fries Bistro Chir Chir Fusion鸡肉工厂 - 唐人街点 葡萄酒连接店@Chinatown Point Chili's Grill and Bar 商人酒窖 - Duxton 太简单 Flor Patisserie 猫与猫小提琴 哈利 新加坡海峡葡萄酒公司 - UE广场 来自Lucha Loco的GO LOCO 用Poke理论改变自我 Butterknife Folk 苔丝酒吧&amp;厨房 车轮上的Cajun(C.O.W) - 新加坡广场 巴罗莎 Molly Roffey的爱尔兰酒吧 杰克的地方 Wine Connection Bistro Rosso Vino 红尾 Harry的