嵌套循环下面似乎有问题。我无法弄清楚出了什么问题。你能看看并提出建议吗?
for (int i = 0; i < headers.size(); i++) {
for (int j = 0; j < headerlists.size(); j++) {
System.out.println(hotelid + "|" + headers.get(i).getText() + "|" + headerlists.get(j).getText());
}
}
输出不符合预期。下面是它打印的输出 -
713374|Basic amenities|WiFi
Air Conditioner
24h Check in
Restaurant
Bar
Cafe
Room Service
Internet
Business Center
Pool
Gym
713374|Basic amenities|Air Conditioning
Doorman
Express Check-In
Express Check-Out
Housekeeping
Banquet Facility
Doctor on Call
713374|Basic amenities|Air Conditioning
Doorman
Express Check-In
Express Check-Out
Housekeeping
Banquet Facility
Doctor on Call
已编辑 - 我期待的是:
713374|Basic amenities|WiFi 713374|Basic amenities|Air Conditioner 713374|Basic amenities|24h Check in 713374|Basic amenities|Restaurant 713374|Basic amenities|Bar 713374|Basic amenities|Cafe 713374|Basic amenities|Room Service 713374|Basic amenities|Internet 713374|Basic amenities|Business Center 713374|Basic amenities|Pool 713374|Basic amenities|Gym
答案 0 :(得分:1)
根据评论中的预期输出,headerLists的数据包含意外的换行符!selenium代码看起来很好。根据你的评论,你基本上说headerLists输出的信息太多了。
同样,由于意外的新行,我们希望处理headerLists的每个节点中每个换行符的每一位数据,因此我们可以将每个换行符拆分为一个数组,以便我们更好地使用它。
将headerList.get(j).getText()视为多行文本,使用以下循环分隔换行符,并为每个设施利用每个 NewlineData 。
/page?success
<强>之前强>
“空调
电视
浴室
ETC“
<强>后强>
“71000空调| 71000电视| 71000浴室| 71000等”
您可以使用split来分隔char分隔的字符串。将带有换行符的headerLists转换为字符串数组。并重新打印字符串数组中的每个节点以及酒店ID。
上面的forloop with split方法是您的关键,显然重新排列您的输出以匹配预期,您可能不想打印71000 TV | 71000浴室等
答案 1 :(得分:0)
似乎headerlists.get(j).getText()
包含new line
:
您可以使用 - &gt;
删除它们replaceAll("\n"," ")); //repalces all new lines with a empty space
以下是您的代码的样子:
for (int i = 0; i < headers.size(); i++) {
for (int j = 0; j < headerlists.size(); j++) {
System.out.println(hotelid + "|" + headers.get(i).getText() + "|" + headerlists.get(j).getText().replaceAll("\n"," ");
}
}