【发布时间】:2020-07-01 04:49:33
【问题描述】:
我一直在研究几个小时没有成功
我只需要 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()
(不给出错误但不显示任何值)
甚至这个,就像他们建议的那样 (How to get the total number of elements in a HTML with Selenium WebDriver and Autohotkey?)
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
}
【问题讨论】:
-
你不应该使用
Length函数吗?如果你先定义一个变量,然后得到它的长度。对于列是这样的:Var := oChrome.findElementByXpath("//table//th") MsgBox % "" Var.Length()对于没有变量的行:MsgBox % "" oChrome.findElementByXpath("//table//tr[not(th)]").Length() -
也没有工作:(似乎它与无法识别的函数调用或类似的事情有关,或者错过了类(比如在处理 Selects 时,有一部分你必须在哪里设置“.AsSelect”等等)
-
你能从你的 XPath 表达式返回的元素中打印文本吗?
Count函数不再起作用?你说它在这里起作用:stackoverflow.com/questions/57237659/… 尝试诱导“innerText”然后计数或长度:Var := oChrome.findElementByXpath("//table//th").Attribute("innerText") MsgBox % "" Var.Count()也尝试使用另一个 webdriver:driver:= ComObjCreate("Selenium.CHROMEDriver") ;Chrome driver driver.Get("http://demo.guru99.com/test/web-table-element.php#") -
感谢您的回复!是的,实际上这确实是一件愚蠢的事情,请看我的回答,我错过了“findElementByXpath”上的“s”,实际上,在堆栈溢出问题中,它确实使用了“findElementsByXpath”,但我很傻,谢谢!跨度>
-
似乎合乎逻辑。不错的收获。我也错过了。由于
findElement不输出列表而是输出单个元素,Count函数返回错误。正式注明。
标签: selenium selenium-webdriver xpath selenium-chromedriver autohotkey