Email Address
Password
Sign In
< /code>
Я использую пакет Selenium python, с удаленным драйвером, работающим в докере на том же хосте с автономным браузером Firefox. Версия селена 4.29.0. Firefox версия 135.0.1. Геккодривер составляет 0,36,0. Python версия 3.11. Хост Debian 12 без графического интерфейса. < /P>
Соответствующий код выглядит следующим образом: < /p>
import time
import docker
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
def setupDockerFirefoxSeleniumContainer():
client = docker.from_env()
client.images.pull("selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-20250303")
firefox = client.containers.run("selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-20250303",
detach = True,
name = "firefox",
ports = {4444: 4444, 7900: 7900},
shm_size = "2G",
environment = ["SE_START_XVFB=false",
"SE_SCREEN_WIDTH=1200",
"SE_SCREEN_HEIGHT=900"])
return firefox
def setupSeleniumFirefoxDriver():
try:
options=webdriver.FirefoxOptions()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:36.0) Gecko/20100101 Firefox/135.0")
driver = webdriver.Remote(
command_executor="http://127.0.0.1:4444/wd/hub",
options=options
)
driver.get("https://httpbin.org/ip")
print("Successfully started Firefox driver.")
return driver
except Exception as e:
print("Caught an exception: ", repr(e))
def cleanupDriver(d):
print("Cleaning up driver")
d.quit()
def cleanupContainer(c):
print("Cleaning up container")
c.stop()
c.remove()
def siteLogin(driver, username, password):
driver.get("https://www.MYWEBSITE.com/login")
driver.implicitly_wait(5)
driver.get_screenshot_as_file("/home/fresh_login_screen.png")
username_box = driver.find_element(by=By.NAME, value="emailInput")
password_box = driver.find_element(by=By.NAME, value="passwordInput")
submit_button = driver.find_element(by=By.CLASS_NAME, value="submitButton")
time.sleep(2)
username_box.send_keys(username)
time.sleep(2)
password_box.send_keys(password)
time.sleep(2)
driver.get_screenshot_as_file("/home/login_screen_keys_sent.png")
time.sleep(2)
#submit_button.click() # doesn't work
#submit_button.submit() # doesn't work
#password_box.submit() # doesn't work
#password_box.send_keys(Keys.ENTER) # doesn't work
submit_button.send_keys(Keys.ENTER) # doesn't work
print("Waiting for login to process.")
time.sleep(5)
driver.get_screenshot_as_file("/home/submitted_login.png")
time.sleep(10)
driver.get_screenshot_as_file("/home/another_screenshot.png")
print(driver.page_source)
def main():
firefoxContainer = setupDockerFirefoxSeleniumContainer()
print("Waiting 5 seconds for Selenium server to start")
time.sleep(5)
firefoxDriver = setupSeleniumFirefoxDriver()
try:
siteLogin(firefoxDriver, "myEmail@example.com", "crazyHardPassword")
except Exception as e:
print("Caught an exception when trying siteLogin: ", repr(e))
finally:
cleanupDriver(firefoxDriver)
cleanupContainer(firefoxContainer)
if __name__=="__main__":
main()
< /code>
Представление входа в систему не работает. Страница, кажется, просто висит. В моих скриншотах я вижу, как мое имя пользователя и пароль были отправлены в правильные окны формы. Тем не менее, я попробовал несколько способов отправить форму (send_keys(Keys.ENTER)
, click () и отправить () ), но, похоже, все, похоже, ничего не произойдет. Снимок экрана выглядит так же до и после (с моим именем пользователя и паролем, сидящими в форме, но, похоже, не было предпринято никакого представления формы). Какие -нибудь советы, как отправить эту форму?
Я пытаюсь войти на веб -сайт, используя Selenium. Соответствующая форма HTML выглядит следующим образом: < /p> [code]
Email Address
Password
Sign In
< /code> Я использую пакет Selenium python, с удаленным драйвером, работающим в докере на том же хосте с автономным браузером Firefox. Версия селена 4.29.0. Firefox версия 135.0.1. Геккодривер составляет 0,36,0. Python версия 3.11. Хост Debian 12 без графического интерфейса. < /P> Соответствующий код выглядит следующим образом: < /p> import time import docker from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys
time.sleep(2) username_box.send_keys(username) time.sleep(2) password_box.send_keys(password) time.sleep(2) driver.get_screenshot_as_file("/home/login_screen_keys_sent.png") time.sleep(2) #submit_button.click() # doesn't work #submit_button.submit() # doesn't work #password_box.submit() # doesn't work #password_box.send_keys(Keys.ENTER) # doesn't work submit_button.send_keys(Keys.ENTER) # doesn't work
print("Waiting for login to process.") time.sleep(5) driver.get_screenshot_as_file("/home/submitted_login.png") time.sleep(10) driver.get_screenshot_as_file("/home/another_screenshot.png") print(driver.page_source)
< /code> Представление входа в систему не работает. Страница, кажется, просто висит. В моих скриншотах я вижу, как мое имя пользователя и пароль были отправлены в правильные окны формы. Тем не менее, я попробовал несколько способов отправить форму (send_keys(Keys.ENTER)[/code], click () и отправить () ), но, похоже, все, похоже, ничего не произойдет. Снимок экрана выглядит так же до и после (с моим именем пользователя и паролем, сидящими в форме, но, похоже, не было предпринято никакого представления формы). Какие -нибудь советы, как отправить эту форму?