我知道这可能很简单,但我似乎找不到我做错了什么。
我将网页的输出与文本文件的内容进行比较。我有下面的代码,对于来自网页的每一个结果,bufferedreader都会循环一次。一旦我发布了代码和结果,这就不会那么令人困惑了。
码
String docOne = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div/div/h5")).getAttribute("textContent").toString();
String docTwo = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[2]/div/h5")).getAttribute("textContent").toString();
String docThree = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[3]/div/h5")).getAttribute("textContent").toString();
String docFour = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[4]/div/h5")).getAttribute("textContent").toString();
String docFive = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[5]/div/h5")).getAttribute("textContent").toString();
String docSix = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[6]/div/h5")).getAttribute("textContent").toString();
String docSeven = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[7]/div/h5")).getAttribute("textContent").toString();
String docEight = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div/div/div[2]/div/div[8]/div/h5")).getAttribute("textContent").toString();
String docNine = driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div/div[4]/div[2]/div/div/div[2]/div/div[2]/div/div/div/h5")).getAttribute("textContent").toString();
try (BufferedReader br = new BufferedReader(new FileReader("/Users/vhaislsalisc/Documents/CDWProductionDomainsRequiredDocs.txt"))) {
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
System.out.println("Webpage: " + docOne + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docTwo + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docThree + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docFour + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docFive + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docSix + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docSeven + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docEight + " Required Doc: " + sCurrentLine);
System.out.println("Webpage: " + docNine + " Required Doc: " + sCurrentLine);
}
br.close();
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}结果
Webpage: Research Request Memo (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research Study Institutional Review Board (IRB) Approval Letter (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Sample Informed Consent and HIPAA Authorization (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research and Development (RD) Committee Approval Letter (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Data Use Agreement (File Document) Required Doc: Research Request Memo (File Document)
Webpage: IRB Approval of Waiver of HIPAA-Compliant Authorization (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research Protocol (File Document) Required Doc: Research Request Memo (File Document)
Webpage: CDW-Domain Checklist (File Document) Required Doc: Research Request Memo (File Document)
Webpage: VA Form 9957 (File Document) Required Doc: Research Request Memo (File Document)
Webpage: Research Request Memo (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Research Study Institutional Review Board (IRB) Approval Letter (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Sample Informed Consent and HIPAA Authorization (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Research and Development (RD) Committee Approval Letter (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Data Use Agreement (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: IRB Approval of Waiver of HIPAA-Compliant Authorization (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: Research Protocol (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: CDW-Domain Checklist (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)
Webpage: VA Form 9957 (File Document) Required Doc: Research Study Institutional Review Board (IRB) Approval Letter (File Document)等等,通过文件的其余部分
所以,我只是想知道我做了什么,以及我如何修复它,使它只通过文件一次,所有的一切都符合什么是从网页来的?
发布于 2013-08-15 22:24:12
它遍历文本文件中的每一行从docOne到docNine的每一个网页。也就是说,它将所有9个文件与第1行、第2行进行比较,等等。
由于您已经粘贴了从文本文件中读取的前2行,并且它们与前2页相匹配,所以我认为您想要的是每一行只读一次并将其与一个网页进行比较。那么,您需要做的就是在显示每个结果之后,简单地丢失while循环并调用readline:
sCurrentLine = br.readLine();
System.out.println("Webpage: " + docOne + " Required Doc: " + sCurrentLine);
sCurrentLine = br.readLine();
System.out.println("Webpage: " + docTwo + " Required Doc: " + sCurrentLine);然而,这将使您的代码更难阅读比它已经是。您应该考虑使用集合(甚至数组)来代替。
按照gparyani的建议编辑,您不需要显式地调用br.close()。这里的详细信息,http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
https://stackoverflow.com/questions/18262525
复制相似问题