XPATH - getAttribute() 和 writer.append() 到 CSV 文件 (Selenium/Selenide)
XPATH - getAttribute() and writer.append() to CSV file (Selenium/Selenide)
我正在尝试获取 "title" 属性值并将其保存在以下元素的 csv 文件中:
<img src="images/i.png" title="Uwagi: łacina, nieczytelne
Data urodzenia: 25.02.1808 r.">
整个htmlhere。
我使用下面的 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
问题是这个值“Uwagi: łacina, nieczytelne
urodzenia 数据:25.02.1808 r.
它分为 2 个部分,它们分别保存为单独的单元格,例如 here
我需要一个单元格中的所有这些值(即 J1731 和 A1732 值应为 1 个单元格)。
我做的时候有什么奇怪的 System.out.println(uwagi.getAttribute("title"));
控制台中仅显示属性值的第二部分(数据 urodzenia:25.02.1808 r.)。
如何将此标题属性值保存为 csv 中的一个单元格?
问候
大部头
从标题中删除换行符,根据您共享的 html,下面的代码将 \n
(换行符)替换为一个 space。
同样在 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+";");
我找到了解决方案。我改变了:
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>
基于以下信息:link
然后我把writer.apend改成了writer.write.
其他同:
...
SelenideElement xxx = $x("//img[contains(@title,'Uwagi')]");
String str = xxx.getAttribute("title");
writer.write(str);
...
结果:picture
问候
大部头
我正在尝试获取 "title" 属性值并将其保存在以下元素的 csv 文件中:
<img src="images/i.png" title="Uwagi: łacina, nieczytelne
Data urodzenia: 25.02.1808 r.">
整个htmlhere。
我使用下面的 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
问题是这个值“Uwagi: łacina, nieczytelne urodzenia 数据:25.02.1808 r.
它分为 2 个部分,它们分别保存为单独的单元格,例如 here
我需要一个单元格中的所有这些值(即 J1731 和 A1732 值应为 1 个单元格)。
我做的时候有什么奇怪的 System.out.println(uwagi.getAttribute("title"));
控制台中仅显示属性值的第二部分(数据 urodzenia:25.02.1808 r.)。
如何将此标题属性值保存为 csv 中的一个单元格?
问候 大部头
从标题中删除换行符,根据您共享的 html,下面的代码将 \n
(换行符)替换为一个 space。
同样在 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+";");
我找到了解决方案。我改变了:
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>
基于以下信息:link
然后我把writer.apend改成了writer.write.
其他同:
...
SelenideElement xxx = $x("//img[contains(@title,'Uwagi')]");
String str = xxx.getAttribute("title");
writer.write(str);
...
结果:picture
问候 大部头