簡體   English   中英

PhantomJS沒有獲得下一頁單擊由JavaScript控制的鏈接

[英]PhantomJS doesn't get the next page clicking in link controlled by JavaScript

我正在使用帶有Selenium WebDriver PhantomJS遍歷一組頁面,其中有一個按鈕封裝了鏈接,您可以單擊鏈接轉到下一頁,如下所示:

<a href="javascript:GetNextPage(1, 12949)" class="next lnkPagination" rel="nofollow">&nbsp;</a>

javascript:GetNextPage的第一個參數根據我的應用程序所在的當前頁面動態變化。 我嘗試使用Firefox Selenium的WebDriver模擬這種行為,並且可以正常工作,但是當我使用PhantomJS Webdriver模擬時,由於我的應用程序永遠停留在第一頁中,因此無法進行迭代。

以下是我執行此迭代的應用程序代碼的確切點。 我曾期望current_page_index在每次迭代中都發生變化,但是並沒有因此而停止,並且在1停止了,而我的while循環將永遠持續下去:

    driver = webdriver.PhantomJS()
    driver.get(response.url)

    while True:
        next_page_link = driver\
                         .find_element_by_xpath("//a[@class='next lnkPagination']")\
                         .get_attribute("href")

        node = re.search("GetNextPage\((\d+),\%20(\d+)\)", next_page_link)
        current_page_index = int(node.group(1))
        last_page_index = int(node.group(2))
        .
        .
        . 
        if current_page_index == last_page_index:
            break

        # Just click to next page if the next page element has rendered on the page
        while True:
            time.sleep(1)
            if driver.execute_script("return jQuery.active == 0"):
                break

        driver.get(next_page_link)


    driver.quit()

它有什么原因可以在Firefox WebDriver中運行,而不能在PhantomJS WebDriver中運行?

我將不勝感激。

謝謝。

這看起來很可疑:

    if driver.execute_script("return jQuery.active == 0"):

我的猜測是,它始終在phantomjs中評估為true,而在Firefox中評估為false。

我將其更改為更穩定的內容,例如:

    String readyState = driver.execute_script("return document.readyState");
    if (readyState != "complete"):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM