Selenium 和 AutoHotkey - 如何获取 table rows/column 的大小?

Selenium and AutoHotkey - How to get the size of table rows/column?

我研究了好几个小时都没有成功

我只需要 Autohotkey 的语法来获取 table rows/column

的大小

我正在按照本指南进行操作https://www.guru99.com/handling-dynamic-selenium-webdriver.html

在其他语言中,他们建议这样:

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

注意他们是用“List”把变量转换成List类型,问题是AHK中没有变量类型定义,应该是自动的,但显然不是这种情况

这是我正在测试的页面,但无法正常运行 http://demo.guru99.com/test/web-table-element.php#

我只需要知道它有多少行and/or列,就这么简单:

 MsgBox %  ""  oChrome.findElementByXpath("//*[@id='leftcontainer']/table/thead/tr/th").size()

(没有错误但不显示任何值)

甚至这个,就像他们建议的那样 ()

 MsgBox %  ""  oChrome.findElementByXpath("//*[@id='leftcontainer']/table/thead/tr/th").Count()

(错误:未知名称,特别是:计数)

目标是获得列数(在本例中为 5)和行数(26),这是为了进一步执行 For Each 并遍历每一行的值

如果有任何建议,我将不胜感激!

完整代码

oChrome := ChromeGet() ; Object for Chrome

MsgBox %  ""  oChrome.findElementByXpath("//*[@id='leftcontainer']/table/thead/tr/th").Size() ; FAIL

MsgBox %  "Finish" 
return

ChromeGet(IP_Port := "127.0.0.1:9222") {
    oChrome := ComObjCreate("Selenium.ChromeDriver")
    oChrome.SetCapability("debuggerAddress", IP_Port)
    oChrome.Start()
    return oChrome
}

啊,所以,经过几天的研究,我注意到一个更大的东西,我需要使用:

.findElementsByXpath()

而不是:

.findElementByXpath()

我在查看 Python 的 Selenium 文档时注意到了这一点: https://selenium-python.readthedocs.io/locating-elements.html

这让我想到了上面那个额外的“s”,所以,就是这样!我还使用了 Count()。 它属于一个简单的逻辑(现在我意识到常识),findElementsByXpath(),正如文档所说,搜索多个元素值,而不仅仅是一个,这样你就可以使用“.Count()”来例如,搜索节点中子节点的总数 因此,对我有用的最终代码如下:

oChrome := ChromeGet() ; Object for Chrome

MsgBox %  ""  oChrome.findElementsByXpath("//*[@id='leftcontainer']/table/thead/tr/th").Count() 

MsgBox %  "Finish" 
return

ChromeGet(IP_Port := "127.0.0.1:9222") {
    oChrome := ComObjCreate("Selenium.ChromeDriver")
    oChrome.SetCapability("debuggerAddress", IP_Port)
    oChrome.Start()
    return oChrome
}