为了账号安全,请及时绑定邮箱和手机立即绑定

XPATH - getAttribute() 和 writer.append() 到 CSV 文件

XPATH - getAttribute() 和 writer.append() 到 CSV 文件

吃鸡游戏 2022-07-06 18:18:58
我正在尝试获取“title”属性值并将其从以下元素保存在 csv 文件中:<img src="images/i.png" title="Uwagi: łacina, nieczytelneData urodzenia: 25.02.1808 r.">整个 html在这里。我在下面使用 xpath 获得了这个属性值(它有效):SelenideElement uwagi = $(By.xpath("//div[@id='table_b_wrapper']//table[@id='table_b']//tbody//tr[1]//img[contains(@title,'Uwagi')]"));  //tr[1] is just a one example from this table. xpath is ok然后我尝试将其放入我的 csv 文件中:writer.append(uwagi+";");  //using ; as separator问题是这个值“注释:拉丁语,难以辨认出生日期:1808 年 2 月 25 日”它分为两部分,它们被保存为单独的单元格,就像这里我需要一个单元格中的所有这些值(即 J1731 和 A1732 值应为 1 个单元格)。当我 System.out.println(uwagi.getAttribute("title")); 只在控制台中显示属性值的第二部分(数据 urodzenia:25.02.1808 r.)时,奇怪的是。如何将此标题属性值保存为 csv 中的一个单元格?
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

从标题中删除换行符,下面的代码\n根据您共享的 html 的需要将(换行符)替换为一个空格。同样在 Selenide 中,您可以将$x其用于 xpath 选择器:


SelenideElement uwagi = $x("//table[@id='table_b']//tr[@role='row'][1]//img[contains(@title,'Uwagi')]");


//using css selector

uwagi = $("#table_b tr[role='row'] img[title^='Uwagi']");

//or even shorter

uwagi = $("#table_b img[title^='Uwagi']");


String uwagiTitle = uwagi.text().replace("\n", " ");


writer.append(uwagiTitle+";");


查看完整回答
反对 回复 2022-07-06
?
慕慕森

TA贡献1856条经验 获得超17个赞

我找到了解决方案。我改变了:


FileWriter writer = new FileWriter(pathString, Charset.forName("Cp1250"));


CsvWriter writer = new CsvWriter(pathString, ';', Charset.forName("Cp1250"));

还使用:


    <dependency>

        <groupId>net.sourceforge.javacsv</groupId>

        <artifactId>javacsv</artifactId>

        <version>2.0</version>

    </dependency>

根据来自的信息:链接


然后我将writer.apend更改为writer.write。


其他也一样:


...

    SelenideElement xxx = $x("//img[contains(@title,'Uwagi')]"); 

    String str = xxx.getAttribute("title");

    writer.write(str);

...

结果:图片


查看完整回答
反对 回复 2022-07-06
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信