我一直在研究几个小时但没有成功
我只需要 Autohotkey 的语法来获取表格行/列的大小
我正在遵循本指南 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#
我只需要知道它有多少行和/或列,它应该像这样简单:
MsgBox % "" oChrome.findElementByXpath("//*[@id='leftcontainer']/table/thead/tr/th").size()
(未给出错误,但不显示任何值(
甚至这个,就像他们建议的那样(如何使用Selenium WebDriver和Autohotkey获取HTML中的元素总数?
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()
我在查看这篇 Selenium 文档 for Python 时注意到了这一点: 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
}