1

我在 Selenium WebDriver 中使用此代码来提取非 Ajax 网页上某个元素的值。

    public int getNumberOfPages(WebDriver driver) {
        try {
            webDriverBackedSelenium.click(linkLastPage);
1               webDriverBackedSelenium.waitForPageToLoad(normalTimeout);
2               new WebDriverWait(driver, normalTimeoutS).until(ExpectedConditions
                        .presenceOfElementLocated(By.xpath(linkFirstPage)));
3               return Integer.parseInt(driver.findElement(By.xpath(pathToNumberOfPages))
                        .getText());            
            } catch (NumberFormatException e){
                e.printStackTrace();
                webDriverBackedSelenium.click(linkPreviousPage);
                webDriverBackedSelenium.waitForPageToLoad(normalTimeout);
            } catch (org.openqa.selenium.NoSuchElementException e){
                e.printStackTrace();
            }
            try {
4               return Integer.parseInt(driver.findElement(By.xpath(pathToNumberOfPages))
                        .getText());
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return 0;
        }

如果我在 (1) 处有断点,请打开 Firebug 并插入 XPath,找到该元素,但是当我运行它时,我在 3 和 4 处都得到 NoSuchElementException(如果我在那里设置断点,再次使用 FirePath,元素被发现为预期的)。

如果等待,我尝试了不同的类型,例如上面的 1 和 2,一次一个以及同时两个,总是具有相同的结果。

超时设置为 30 秒/30 000 毫秒。

我读过两个类似的问题

但是那里的答案不适用于我的情况(因为我已经验证了 FirePath 中的元素)。

bl**dy 元素在那里,为什么 Selenium 找不到它?

XPath

//tr[@class='rgPager']//a[@class='PagerItem'] [@title='Första']

HTML

<a title="Första" class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl04','')" style="display:inline;">&lt;&lt;</a>&nbsp;<a title="Föregående" class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl05','')" style="display:inline;">&lt;</a>&nbsp;<a class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl06','')" style="display:inline;">...</a>&nbsp;<a class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl07','')">161</a>&nbsp;<a class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl08','')">162</a>&nbsp;<a class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl09','')" style="display:none;">...</a>&nbsp;<a title="Nästa" class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl10','')" style="display:none;">&gt;</a>&nbsp;<a title="Sista" class="PagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl11','')" style="display:none;">&gt;&gt;</a>&nbsp;<br><a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl12','')">A</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl13','')">B</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl14','')">C</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl15','')">D</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl16','')">E</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl17','')">F</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl18','')">G</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl19','')">H</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl20','')">I</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl21','')">J</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl22','')">K</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl23','')">L</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl24','')">M</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl25','')">N</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl26','')">O</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl27','')">P</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl28','')">Q</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl29','')">R</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl30','')">S</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl31','')">T</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl32','')">U</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl33','')">V</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl34','')">W</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl35','')">X</a>&nbsp;Y&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl36','')">Z</a>&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl37','')">Å</a>&nbsp;Ä&nbsp;<a href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl38','')">Ö</a>&nbsp;&nbsp;<a class="SelectedPagerItem" href="javascript:__doPostBack('ctl01$cphContent$Quickrank1$ctl00$ctl03$ctl01$ctl39','')">Alla</a>
4

0 回答 0