【问题标题】:Iterating on the table using Selenium使用 Selenium 在表上迭代
【发布时间】:2018-01-12 10:38:10
【问题描述】:

我不明白为什么 x-path 在表格中不起作用。我正在尝试从找到 xpath 的网站上迭代表,但 Eclipse 告诉我:

“无法使用 xpath 找到元素”。

我应该以另一种方式在表中找到 xpath 吗?

网址:https://www.oferty.net/mieszkania/szukaj?ps%5Blocation%5D%5Btype%5D=1&ps%5Btype%5D=1&ps%5Btransaction%5D=1&ps%5Blocation%5D%5Btext%5D=dolno%C5%9Bl%C4%85skie

我尝试阅读一个报价,例如:

String urlwyniki ="https://www.oferty.net/mieszkania/szukaj?ps%5Blocation%5D%5Btype%5D=1&ps%5Btype%5D=1&ps%5Btransaction%5D=1&ps%5Blocation%5D%5Btext%5D=dolno%C5%9Bl%C4%85skie";
driver.get(urlwyniki);
String xpathResult = "//html/body/div[2]/div[4]/div[2]/div[2]/div/div[2]/div[5]/table/tbody/tr[5]/td";
String sCellValue = driver.findElement(By.xpath(xpathResult)).getText();
System.out.print(sCellValue);

我做错了什么?

【问题讨论】:

  • 试试 x-path '//tbody/tr/td'
  • 你能像你想的那样写整个 xpath。我已经通过类名尝试了几种方法:
  • 你能像你想的那样写整个 xpath。我已经通过类名尝试了几种方法:表类“属性”。如果我使用它,我会得到所有报价的列表。但是当我想迭代它时,eclipse写webtable中的行数= 0。
  • 哪个表?哪个text

标签: java selenium xpath web-scraping


【解决方案1】:

找到下面的代码来迭代表格中的所有单元格值。它可能会帮助你。

String urlwyniki ="https://www.oferty.net/mieszkania/szukaj?ps%5Blocation%5D%5Btype%5D=1&ps%5Btype%5D=1&ps%5Btransaction%5D=1&ps%5Blocation%5D%5Btext%5D=dolno%C5%9Bl%C4%85skie";
driver.get(urlwyniki);
String xpathResult = "//table/tbody/tr/td";
List<WebElement> rows = driver.findElements(By.xpath(xpathResult));
List<WebElement> cols=new ArrayList<WebElement>();
for(int i=0;i<rows.size();i++){
    System.out.print("Row value: "+i);
    cols=rows.get(i).findElements(By.tagName("td"));
    for(WebElement col:cols)
        System.out.print("cell value "+col.getText());
} 

【讨论】:

  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2015-10-02
相关资源
最近更新 更多