java - Selenium - 每行中的意外行为发现元素
问题描述
硒,Chrome WebDriver,Java。
尝试使用以下代码循环抛出行并获得意外行为。
List<WebElement> divs = driver.findElementsByXPath("//div[@class = \"w-dyn-items\"][contains(.//*,'2019')]/div[@class = \"w-dyn-item\"][position() < 30]")
for (WebElement div : divs) {
DocumentWrapper doc = new DocumentWrapper()
try {
//grab document stuff
doc.title = div.findElementByXPath("//h1").getText()
log.info("\tTitle: ${doc.title}")
doc.dateStr = div.findElementByXPath("//div[@class=\"meta-tag\"]").getText()
log.info("\tDate: ${doc.dateStr}")
String google_drive_link = div.findElementByXPath("//a[@class=\"drop-link\" and contains(. ,\"PDF Agenda\")]").getAttribute('href')
log.info("\traw Url: ${google_drive_link}")
我得到的结果只是一遍又一遍地重复相同的标题、日期和链接
2019-03-18 16:47:39 [main] INFO :: Title: City Council & Board/Commission Meetings
2019-03-18 16:47:39 [main] INFO :: Date: DECEMBER 23, 2019
2019-03-18 16:47:39 [main] INFO :: Url: https://drive.google.com/uc?export=download&id=1aAivoeNydSf761Hmih7lHWH7rLXkhuzV
2019-03-18 16:47:39 [main] INFO :: Title: City Council & Board/Commission Meetings
2019-03-18 16:47:39 [main] INFO :: Date: DECEMBER 23, 2019
2019-03-18 16:47:39 [main] INFO :: raw Url: https://drive.google.com/open?id=1aAivoeNydSf761Hmih7lHWH7rLXkhuzV
2019-03-18 16:47:39 [main] INFO :: Title: City Council & Board/Commission Meetings
2019-03-18 16:47:39 [main] INFO :: Date: DECEMBER 23, 2019
2019-03-18 16:47:39 [main] INFO :: Url: https://drive.google.com/uc?export=download&id=1aAivoeNydSf761Hmih7lHWH7rLXkhuzV
2019-03-18 16:47:39 [main] INFO :: Title: City Council & Board/Commission Meetings
2019-03-18 16:47:39 [main] INFO :: Date: DECEMBER 23, 2019
2019-03-18 16:47:39 [main] INFO :: raw Url: https://drive.google.com/open?id=1aAivoeNydSf761Hmih7lHWH7rLXkhuzV
2019-03-18 16:47:39 [main] INFO :: Title: City Council & Board/Commission Meetings
2019-03-18 16:47:39 [main] INFO :: Date: DECEMBER 23, 2019
2019-03-18 16:47:39 [main] INFO :: Url: https://drive.google.com/uc?export=download&id=1aAivoeNydSf761Hmih7lHWH7rLXkhuzV
现在这些在技术上不是表格行,而是一系列 div。但是他们不应该同样工作吗?如果不是,有人可以向我解释为什么这不应该工作吗?
解决方案
好吧,我阅读了 github.io 上的 Selenium 文档并找到了这个..
它说我们应该在 XPath 之前使用一个点作为相对路径。这是我最初的直觉,但在以前的作品中,我在使用那个点时遇到了错误。将再试一次并更新我的答案。
更新* 这修复了它!
Found document:
Title - City Council Public Hearing
Date - MARCH 25, 2019
Link - https://drive.google.com/uc?export=download&id=1aAivoeNydSf761Hmih7lHWH7rLXkhuzV
Found document:
Title - City Council Meeting (Regular)
Date - MARCH 11, 2019
Link - https://drive.google.com/uc?export=download&id=1bc1MBr_M10fJOVTkQTML7LFLzz_c28HB
Found document:
Title - City Council (Special)
Date - MARCH 11, 2019
Link - https://drive.google.com/uc?export=download&id=1odnxBz6oHps5C66mHCcijx2YS_y7jgM_
Found document:
Title - City Council Meeting (Regular) - Business Mtg. at 5:30 p.m. & Ceremonial at 7:00 p.m.
Date - FEBRUARY 25, 2019
Link - https://drive.google.com/uc?export=download&id=13NBhYiRDrw2egi6iRHLgI-BlRjYIr95N
推荐阅读
- selenium - 如何根据 HTML 使用 xpath 识别复选框
- google-maps - Google Java Script API 的 API 密钥
- wordpress - 如何将社交媒体图标重新定位为右侧固定侧导航栏中的菜单列表项?
- php - 致命错误:未捕获的 PDOException:SQLSTATE[HY000]:一般错误:获取模式需要类名参数
- python - 缓存 Spark Dataframe 以提高速度
- c# - 为什么不能这样实现接口
- javascript - 如何使用 javascript 在任何驱动器中创建文本文件
- javascript - 从 nodejs/expressjs 中的 postman 提取二进制数据(文件)
- vba - 不匹配错误 VBA 的适当定义
- java - docker运行rocketeq错误