這個賞金已經結束。回答這個問題有資格獲得 50聲望獎勵。賞金寬限期將在6 小時后結束。 Callum正在尋找這個問題的更詳細的答案。
我想在下面頁面的彈出視窗中使用滾動條。如果您單擊頁面上的任何產品,它將打開一個彈出視窗,您可以在其中添加額外的專案。我正在嘗試使用Keys.send_keys(Keys.ARROW_DOWN)向下滾動彈出視窗,但在 Chrome 中找不到滾動條元素。我嘗試使用其他方法移動到元素但沒有成功,所以想嘗試使用箭頭鍵。
https://www.just-eat.co.uk/restaurants-mcdonalds-victorialondon/menu
我設法在 FireFox 的彈出視窗上使用箭頭鍵,但無法在 Chrome 中復制。
uj5u.com熱心網友回復:
您可以嘗試在彈出視窗中找到一個元素,然后使用該元素進行滾動。這里的技巧是確保元素是可聚焦的,以便您可以使用它來使用箭頭鍵進行滾動。focusable 元素是可以接收鍵盤事件的元素,這些元素在其中宣告了一個焦點函式。由于 w3c 檔案http://www.w3.org/TR/DOM-Level-2-HTML/html.html很久沒有更新,我們沒有一個可聚焦元素的串列,但是一些根據它的可聚焦元素是HTMLInputElement、HTMLSelectElement、HTMLTextAreaElement、HTMLIFrameElement、HTMLButtonElement、HTMLAnchorElement 和任何帶有 tabindex 的元素。
以下是供您參考的示例代碼片段。
from selenium.webdriver.common.keys import Keys
focusable_element_in_popup = driver.find_element_by_id('id_of_the_element')
focusable_element_in_popup.send_keys(Keys.ARROW_DOWN)
#or you can use //a magic using xpath to return you the any first link on popup, like below
#driver.find_element_by_xpath('//div[@]//a')
或者您也可以使用 move_to_element 或 scrollIntoView 如下。如果這不能按預期作業,請嘗試在 move_to_element 之后添加 actions.click() 以使其聚焦。
from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_id("my-id")
actions = ActionChains(driver)
actions.move_to_element(element).perform()
#actions.move_to_element(element)
#actions.click()
#actions.send_keys("SOME DATA")
#actions.perform()
#or
driver.execute_script("arguments[0].scrollIntoView();", element)
起初可能需要進行一些反復試驗才能使其適合您的用例。
uj5u.com熱心網友回復:
我喜歡在使用 Selenium 時使用 JavaScript 向下滾動。根據我的經驗,它更可靠。
請嘗試以下操作:
X = 500
DRIVER_NAME.execute_script("window.scrollBy(0, X)")
另一種選擇是首先通過將 CSS 注入網頁來避免滾動。您可以撰寫幾行 CSS 代碼,使彈出視窗的字體和行高非常小;這樣,您無需滾動即可將所有內容放入螢屏。
下面是它的樣子:
new_css = "body{background-color: white;}"
DRIVER_NAME.executeScript("$('<style type=\"text/css\">new_css</style>').appendTo('html > head');");
上述兩種解決方案之一應該可以解決您的問題。
uj5u.com熱心網友回復:
我不確定您已經嘗試過什么以及什么失敗了,但是既然您提到了彈出視窗的存在,您需要確保您在正確的視窗(即彈出視窗)上進行操作。
請在此處查看更多詳細資訊:聚焦不同的視窗
一旦您確認您在正確的視窗上操作,上面的回復應該可以解決問題。您可能還會發現此鏈接對滾動網頁很有用
最后但并非最不重要的一點是,始終建議分享您的代碼的可重現示例以幫助其他人幫助您;) 祝您好運
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397420.html
