Selenium에 문제가있어 이해할 수 없습니다. 또한 Google을 통해이 문제에 대한 많은 정보를 찾을 수 없습니다. 페이스 북에셀레늄 WebDriverException : SubState가 정의되지 않은 InputState에 'id'마우스가 있어야 함. pointerMove
- 로그 :
내 셀레늄 스크립트는 다음 단계를 수행합니다.
- 친구 제안 목록으로 이동하십시오.
- 몇 번 아래로 스크롤하여 (더 많은 제안을로드하려면)
- 콘솔에 모든 제안 사항을 하나씩 제시하고 사용자에게 친구 추가 여부를 묻습니다.
확인시 문제의 제안으로 이동 한 후 추가 버튼을 클릭하는 동작 체인이 만들어집니다.
하지만 액션 체인이 작동하지 않습니다.
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
from selenium.webdriver.common.action_chains import ActionChains
TIMEOUT = 5
def main():
driver = webdriver.Firefox()
driver.get("http://www.facebook.com")
print(driver.title)
input_mail = driver.find_element_by_id("email")
input_password = driver.find_element_by_id("pass")
input_mail.send_keys("[email protected]")
input_password.send_keys("your_password")
input_password.submit()
try:
WebDriverWait(driver, TIMEOUT).until(
EC.visibility_of_element_located((By.NAME, "requests")))
driver.get("https://www.facebook.com/friends/requests/?fcref=jwl")
WebDriverWait(driver, TIMEOUT).until(
EC.visibility_of_element_located((By.ID, "fbSearchResultsBox")))
# Let Facebook load more friend proposals.
for i in range(2):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
time.sleep(1.0)
friend_proposals = driver.find_elements_by_class_name(
"friendBrowserListUnit")
for friend_proposal in friend_proposals:
try:
friend_title = friend_proposal.find_element_by_class_name(
"friendBrowserNameTitle")
except NoSuchElementException:
print("Title element could not be found. Skipping.")
continue
print("Potential friend name: '%s'" % friend_title.text)
social_context = friend_proposal.find_element_by_class_name(
"friendBrowserSocialContext")
social_context_text = social_context.text
print("Social context: '%s'" % social_context_text)
friend_add_button = friend_proposal.find_element_by_class_name(
"FriendRequestAdd")
actions = ActionChains(driver)
actions.move_to_element(friend_proposal).move_to_element(
friend_add_button).perform()
time.sleep(0.1)
print("Should I add the friend (y/N): ")
response = input()
if response == "y":
friend_add_button.click()
time.sleep(1.0)
print("Added friend...")
except TimeoutException as exc:
print("TimeoutException: " + str(exc))
finally:
driver.quit()
if __name__ == '__main__':
try:
main()
except:
raise
나는 최신 셀레늄 버전을 사용하고 있습니다 :
Potential friend name: 'John Doe'
Social context: 'Max Mustermann und 3 weitere gemeinsame Freunde'
Traceback (most recent call last):
File "c:\...\facebook_selenium_minimal.py", line 74, in <module>
main()
File "c:\...\facebook_selenium_minimal.py", line 57, in main
friend_add_button).perform()
File "C:\Python36\lib\site-packages\selenium\webdriver\common\action_chains.py", line 77, in perform
self.w3c_actions.perform()
File "C:\Python36\lib\site-packages\selenium\webdriver\common\actions\action_builder.py", line 76, in perform
self.driver.execute(Command.W3C_ACTIONS, enc)
File "C:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 238, in execute
self.error_handler.check_response(response)
File "C:\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Expected 'id' mouse to be mapped to InputState whose subtype is undefined, got: pointerMove
이 내 셀레늄 스크립트입니다 :
C:\Users\Robert>pip show selenium
Name: selenium
Version: 3.3.1
은 내가 파이어 폭스 52.0.1이 나는 다음과 같은 오류가 발생합니다 geckodriver v0.15.0.
업데이트 : 빠른 테스트 결과 동일한 스크립트가 Chrome Webdriver와 완벽하게 작동한다는 것이 밝혀졌습니다.
업데이트 2 : Github에서의 셀레늄 bugtracker에서이 문제 관련이 될 수도 있습니다 : https://github.com/SeleniumHQ/selenium/issues/3642
이 오류가 발생한 정확한 위치를 가리 키십시오. –
이 줄은 다음과 같습니다.'actions.move_to_element (friend_proposal) .move_to_element (friend_add_button) .perform()' – robert