web-dev-qa-db-ja.com

Python Selenium`move_by_offset`が機能しない

Python Selenium 機能しません:で単純なスクロールアクションを呼び出す

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
time.sleep(2)
actions = ActionChains(driver)
actions.move_by_offset(500, 500).perform()

たとえば、要素に移動する関数、works Ok and Do scroll:

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
time.sleep(2)

element = driver.find_element_by_css_selector(<Something>)
actions = ActionChains(driver)
actions.move_to_element(element).perform()

オフセット付きの要素への移動を呼び出すと、機能しません再度:

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
time.sleep(2)

element = driver.find_element_by_css_selector(<Something>)
actions = ActionChains(driver)
actions.move_to_element_with_offset(element, 500, 500).perform()

理由は何ですか?

4
GensaGames

マウスを動かしてから数秒待ってください。たとえば、CentOS7.3ホストで画面キャプチャを取得するための次のコードは私のために働いた。

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument("--window-size=720,480")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/bin/chromedriver', chrome_options=chrome_options, service_args=['--verbose', '--log-path=/tmp/chromedriver.log'])

driver.get(url)
time.sleep(6)

ActionChains(driver).move_by_offset(50, 50).perform()
time.sleep(2)

filename="/tmp/Screenshots/uuid.png"
driver.save_screenshot(filename)
2
Batter

そうみたいです move_by_offsetページをスクロールすることはできませんが、マウスを現在のマウス位置からのオフセットに移動することはできます。

確認するために、これを試すことができます。

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
actions = ActionChains(driver)
actions.move_by_offset(300, 500).context_click().perform()

オフセットでページをスクロールするには、jsを使用する必要があります。

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
driver.execute_script('window.scrollBy(0, 500)')  # x=0, y=500
0