【问题标题】:Selenium Web driver outputs wrong row count of web tableSelenium Web 驱动程序输出错误的 Web 表行数
【发布时间】:2023-03-10 22:01:01
【问题描述】:

我正在使用 selenium web 驱动程序来计算 web 表的行数。这是我的那部分代码:

List<WebElement> rows = driver.findElements(By.xpath("//div[@class='z-listbox-body']/table/tbody/tr")); totalrows = rows.size();

它没有输出预期的结果。谁能告诉我为什么?

【问题讨论】:

  • 实际和预期的结果是什么?您能否发布页面源代码的 sn-p 以说明它应该找到的内容?
  • 实际/预期结果是什么?请提供 Dom 示例。
  • 这段代码输出 1 而我期望 76 行。我认为它只计算第一行。我也试过这段代码: List rows = driver.findElements(By.tagName("tr"));但这会输出 17 行而不是 76 行。
  • 顺便说一下,这是第一个标签的xpath:/html/body/div/div/div/div/div[3]/table/tbody[1]/tr [1] 是不是因为我错误地访问了xpath?

标签: java web selenium-webdriver html-table row


【解决方案1】:

你应该首先选择&lt;tbody&gt;,存储元素,在当前元素中找到所有&lt;tr&gt;s,然后你应该通过获取列表的长度来获取你的值:

WebElement tbody = driver.findElement(By.xpath("//div[@class='z-listbox-body']/table/tbody"));
List<WebElement> rows = tbody.findElements(By.xpath("tr"));
totalrows = rows.size();

对不起,如果我做错了什么,但我将 Selenium 与 Python 一起使用,而不是 Java。

这是正在运行的 Python 代码:

tbody = browser.find_element_by_xpath("//div[@class='z-listbox-
body']/table/tbody")
rows = tbody.find_elements_by_xpath("tr")
totalrows = len(rows)

请注意,当我选择 find_element_by_xpath时,我将仅获取第一个元素并将其存储在普通变量中,并且在选择行时,我正在 find_elments_by_xpath,因此将获得元素列表.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-28
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多