На моем Mac, используя pycharm + selenium (или seleniumbase) + undetected-chromedriver, я могу успешно загрузить страницу и выполнить автоматизацию.
Я пробовал на машине с Windows 11, и сценарий тоже сработал.
Так что я схожу с ума, пытаясь понять, почему на установка Linux не работает должным образом.
Я использую venv, некоторые ключевые сведения о версии:
Код: Выделить всё
Python 3.11.6
selenium 4.16.0
seleniumbase 4.22.0
chromedriver --version
ChromeDriver 120.0.6099.71 (9729082fe6174c0a371fc66501f5efc5d69d3d2b-refs/branch- heads/6099_56@{#13})
google-chrome --version
Google Chrome 120.0.6099.71
- Следующая страница — рабочая = страница сведений об учетной записи или вызов MFA
- Следующая страница — не работает = что-то пошло не так
Мой предпочтительный способ:
Код: Выделить всё
from seleniumbase import Driver
driver = Driver(uc=True, headless2=True)
driver.get("https://www.originenergy.com.au/my")
print("UA= ", driver.get_user_agent())
driver.type('//*[@id="login_username"]', "email_address")
driver.type('//*[@id="password"]', "password")
driver.click('//*[@id="root"]/div/div/div/div/div/div[2]/form/div/button')
Код: Выделить всё
from seleniumbase import SB
with SB(uc=True, headless=True, xvfb=True) as sb:
sb.open("https://www.originenergy.com.au/my")
print("UA: ", sb.get_user_agent())
print("\npage source\n", sb.get_page_source())
sb.type('//*[@id="login_username"]', "email_address")
sb.type('//*[@id="password"]', "password")
print("\nUsername and Password entered\n")
sb.click('//*[@id="root"]/div/div/div/div/div/div[2]/form/div/button')
sb.sleep(10)
Код: Выделить всё
driver = Driver(uc=True, headless2=True, user_data_dir="/script/datadir")
Любой совет или указание будет круто. Я действительно не хочу запускать виртуальную машину Windows только для запуска этого сценария.
=== Редактировать и обновлять ===
Я перестроил среду Linux, используя только самое необходимое:
Python3.11, venv, pip, seleniumbase
x11vnc, xvfb
google-chrome
Ran мой скрипт использовал метод «из драйвера импорта seleniumbase» и был изменен на head = true:
Код: Выделить всё
from seleniumbase import Driver
driver = Driver(uc=True, headed=True, user_data_dir=/script/newdir)
driver.get("https://www.originenergy.com.au/my")
print("UA= ", driver.get_user_agent())
driver.type('//*[@id="login_username"]', "email_address")
driver.type('//*[@id="password"]', "password")
driver.click('//*[@id="root"]/div/div/div/div/div/div[2]/form/div/button')
Код: Выделить всё
** chromedriver to download = 120.0.6099.71 (Latest Stable)
Downloading chromedriver-linux64.zip from:
https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.71/linux64/chromedriver-linux64.zip ...
Download Complete!
Extracting ['chromedriver'] from chromedriver-linux64.zip ...
Unzip Complete!
The file [uc_driver] was saved to:
/script/venv/lib/python3.11/site-packages/seleniumbase/drivers/uc_driver
Making [uc_driver 120.0.6099.71] executable ...
[uc_driver 120.0.6099.71] is now ready for use!
Код: Выделить всё
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Я вижу, как открывается вкладка Chrome, вводятся имя пользователя и пароль, на этот раз в консоли devtools нет сообщений «1337», но я все равно получаю тот же результат на странице «Что-то пошло не так».
Я получаю следующие ошибки консоли devtools:
Код: Выделить всё
Failed to load resource: the server responded with a status of 429 () - /149e9513-01fa-4fb0-â¦x-kpsdk-v=j-0.0.0:1
Я позволяю странице загружаться с помощью таймера сна, а также засыпаю перед нажатием кнопки входа в систему.
Напротив, эти же ошибки регистрируются как на моем Mac, так и на Windows, поэтому я не знаю, является ли это отвлекающим маневром или законной проблемой для адрес
Последняя ошибка, которая появляется при перенаправлении меня на страницу «что-то пошло не так»:
Код: Выделить всё
[error] handleError invoked myemail@gmail.com with errorCode: 429 and uniqueId: N/A Error: myemail@gmail.com: errorCode: 429, uniqueId: N/A
at Ue (LoginErrorHandler.ts:15:7)
at r.handleError (withLogin.tsx:104:61)
at withLogin.tsx:140:14
at s (runtime.js:63:15)
at Generator._invoke (runtime.js:293:1)
at Generator.throw (runtime.js:118:1)
at i (asyncToGenerator.js:5:1)
at u (asyncToGenerator.js:31:1)
at nrWrapper (login?state=hKFo2SBTâ¦Mi4yIn0%3D:56:18441)
r @ fs.js:4
p @ sumoLogger.js:10
error @ index.js:2
Ue @ LoginErrorHandler.ts:13
(anonymous) @ withLogin.tsx:104
(anonymous) @ withLogin.tsx:140
s @ runtime.js:63
(anonymous) @ runtime.js:293
(anonymous) @ runtime.js:118
i @ asyncToGenerator.js:5
u @ asyncToGenerator.js:31
nrWrapper @ login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
Promise.then (async)
nrWrapper @ login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
i @ asyncToGenerator.js:15
c @ asyncToGenerator.js:27
(anonymous) @ asyncToGenerator.js:34
nrWrapper @ login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
r @ login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
t @ _export.js:36
(anonymous) @ asyncToGenerator.js:23
(anonymous) @ withLogin.tsx:21
m @ react-dom.production.min.js:15
w @ react-dom.production.min.js:15
(anonymous) @ react-dom.production.min.js:16
S @ react-dom.production.min.js:16
C @ react-dom.production.min.js:17
k @ react-dom.production.min.js:17
N @ react-dom.production.min.js:17
Rn @ react-dom.production.min.js:85
Fn @ react-dom.production.min.js:87
t.unstable_runWithPriority @ scheduler.production.min.js:20
ho @ react-dom.production.min.js:113
yc @ react-dom.production.min.js:207
Dn @ react-dom.production.min.js:86
nrWrapper @ login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
Подробнее здесь: https://stackoverflow.com/questions/776 ... n-on-linux
Мобильная версия