我正在嘗試在 Python 中使用 Selenium 從網站上抓取資料,其中資料僅在我單擊“詳細資訊”按鈕后才會出現,問題是該按鈕最初不可見,需要在內部滾動條上滾動 (在紅色的)
作為參考,這里是網站: https ://www.abt-sportsline.com/tuning/configurator#80706385!43C6B47
目標是滾動這個內部滾動條,以便我可以單擊按鈕并查看/抓取資料。
這是我的初始代碼:
scrollBar = driver.find_element(By.XPATH,'//*[@id="mCSB_1_dragger_vertical"]/div')
driver.execute_script("arguments.scrollBy(0,arguments[0].scrollHeight)", scrollBar)
temp_element = in_tab_object.find_element(By.CSS_SELECTOR,"div > div > div > div.row > div.col-xs-12.product-details > div > div.text-right.details-link > span.icon-ArrowRight")
temp_element.click()
這根本不滾動內部欄,我收到以下錯誤:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
我有另一個解決這個問題的想法,我找到滾動條容器并單擊它的底部,因此一直向下滾動,但我不確定如何指定單擊容器的本地坐標。
一些幫助將不勝感激!
uj5u.com熱心網友回復:
你可以試試 ActionChains。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains as AC
dr = webdriver.Chrome("[path_to_your_chromedriver]")
dr.get("https://www.abt-sportsline.com/tuning/configurator#80713308!5972E27")
aa = dr.find_element_by_id("mCSB_1_scrollbar_vertical")
action = AC(dr)
action.click_and_hold(aa).move_by_offset(0,1).perform()
# Don't forget to release the click_and_hold, for example with:
action.reset_actions()
然而,這并不能很好地作業。我認為這與它是一個自定義滾動條有關。
在此處閱讀有關動作鏈的更多資訊:
https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
.
uj5u.com熱心網友回復:
由于它不在框架內,您可以輕松使用scrolled_once_into_view它與js中的scrollIntoView()相同。
例如:
element = driver.find_element('xpath', "DETAILS_BUTTON_XPATH")
element.scrolled_once_into_view # Ignore IDE errors for this command. It is working well.
或者,您可以使用以下命令(使用 JS 命令):
element = driver.find_element('xpath', "DETAILS_BUTTON_XPATH")
driver.execute_script("arguments[0].scrollIntoView();", element)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/473982.html
上一篇:ImportError:我的腳本中沒有名為“selenium”的模塊錯誤
下一篇:訊息:元素點擊被攔截
