我想弄清楚如何使用硒執行下一頁單擊新聞發佈頁面上。這是我的代碼,將轉到正確的網站並執行搜索以獲取正確的新聞發佈文章主題頁。此網站已配置爲在搜索執行後查看第1頁上的每個新聞稿,您還必須選擇頁面底部的更多新聞結果按鈕。我能夠毫無問題地進入整個第1頁的新聞欄目。這是我的代碼,執行搜索和頁面點擊。ElementNotVisibleException下一頁按鈕單擊時出現Python/Selenium錯誤
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get('http://www.businesswire.com/portal/site/home/')
search_box_element = browser.find_element_by_id('bw-search-input')
search_box_element.clear()
search_box_element.send_keys('biotechnology')
search_box_element.send_keys(Keys.ENTER)
search_box_element_two = browser.find_element_by_id('more-news-results')
search_box_element_two.click()
這部分的代碼工作正常,但我希望能夠點擊下一步按鈕移動到等2頁,然後第3頁和。下面是我認爲會的工作代碼,但它不會:
next_page_click_element = browser.find_element_by_class_name("bw-paging-next")
next_page_click_element.click()
的這部分代碼拋出一個錯誤:
selenium.common.exceptions.ElementNotVisibleException: Message:
element not visible
我一直在使用
next_page_click_element = browser.find_element_by_xpath('//*[@id="more-news-pagination"]/div/div[1]/div/a')
也嘗試但得到了相同的錯誤信息。我還嘗試在next_page_click_element部分之前添加這些代碼行。
element_present = EC.presence_of_element_located((By.ID, "bw-paging-next"))
WebDriverWait(browser, 10).until(element_present)
雖然這確實會導致程序等待它返回此錯誤消息:
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
就如何解決這個問題的任何建議,將不勝感激。
試着用'(By.CLASS_NAME,「bw-paging-next」)替換'(By.ID,「bw-paging-next」)'' – Andersson
嗨,謝謝你的迴應。不幸的是,這是行不通的。用By.CLASS_NAME替換By.ID會返回我的原始元素不可見錯誤消息。這種變化不會導致等待時間的發生。 – user3798654
嘗試在點擊 – Andersson