Я пытался использовать Selenium 3.141.0 и Python3.6 для автоматизации входа на некоторые веб-сайты на Pi, работающем под управлением Raspbian. Pi работает под управлением Chromium и Firefox-ESR 52.9 (я не смог установить новейшую версию Firefox для установки). Поскольку я продолжал получать Exec Errors с помощью chromedriver, я перешел к Firefox.
Сценарий, по сути, запрашивает учетные данные один раз, а затем передает их в каждый URL через цикл. Я усовершенствовал его для Windows (да, я изменил эту версию кода, чтобы она была удобной для Linux). Я знаю, что Pi использует ARM и может не работать с этими драйверами (я пробовал много версий geckodriver)
Traceback (most recent call last):
File "auto03.py", line 105, in <module>
main_menu()
File "auto03.py", line 46, in main_menu
firefoxopen()
File "auto03.py", line 79, in firefoxopen
driver = webdriver.Firefox(geckodriver)
File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
keep_alive=True)
File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused
В зависимости от того, что я изменяю при устранении неполадок, ошибки в основном переключаются между этими тремя:
selenium.common.exceptions.WebDriverException: Message: connection refused
или
selenium.common.exceptions.WebDriverException: Message: newsession
или
File "auto01.py", line 4, in <module>
driver=webdriver.Chrome('/usr/local/bin/chromedriver')
File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
self.service.start()
File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/common/service.py", line 76, in start
stdin=PIPE)
File "/usr/lib/python3.5/subprocess.py", line 676, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1282, in _execute_child
raise child_exception_type(errno_num, err_msg)
OSError: [Errno 8] Exec format error
Мой код:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from getpass import getpass
import time
import os
...
...
def firefoxopen():
global driver
driver = webdriver.Firefox('/usr/local/bin/geckodriver')
driver.maximize_window()
...
def allboards():
boards = [6 REDACTED VARIABLE NAMES POINT TO URLS]
y = 1
if y < 6:
for x in boards:
driver.get(x)
driver.find_element_by_id('usernameBox').send_keys(VARIABLE FOR USERNAME)
driver.find_element_by_id('passwordBox').send_keys(VARIABLE FOR PASSWORD)
driver.find_element_by_id('loginButton').click()
driver.find_element_by_link_text('Operations Center').click()
# These lines open a new tab then switch to the tab specified by y (1st, 2nd, 3rd, etc).
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[y])
# This increments the variable one line up so that the next round of the loop moves to the next tab.
y = y + 1
В идеале скрипт должен запрашивать имя пользователя / пароль, открывать Firefox, открывать первый URL-адрес, вставлять учетные данные, открывать второй URL-адрес и т. Д. И т. Д. *