首页 > 解决方案 > 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。但是他们不应该同样工作吗?如果不是,有人可以向我解释为什么这不应该工作吗?

我正在从https://www.cityofalhambra.org/city-meetings提取数据的站点

标签: javaseleniumselenium-chromedriverrows

解决方案


好吧,我阅读了 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

推荐阅读