python - Selenium登录问题到站点问题
问题描述
我需要您的帮助才能使用 selenium python登录该站点。我无法理解 html 是通过 xpath 还是通过 id 或其他方式。我尝试了很多但没有奏效。所以我问你。
我需要修复插入用户名、密码和登录按钮
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import os
from time import sleep
USER = os.getenv('myuser')
PASS = os.getenv('mtypass')
driver = webdriver.Chrome()
#driver.get('https://exoikonomo2020.gov.gr/')
driver.get('https://exoikonomo2020.gov.gr/web/exoikonomese-kat-oikon/login')
#LoginURL = "//*[@id="p_p_id_56_INSTANCE_zSwUFIXoJ25s_"]/div/div/div[1]/div/div/div[2]/div/p[1]/a/img"
ContinueButton = "//span[text()='Συνέχεια']"
#ContinueButton = "//*[@id="_exoik_login_WAR_exoikonomov2portlet_:scribeOAuthBeanForm:j_idt116"]/span[2]"
UsernameURL = "text"
PasswordURL = "password"
LoginButtonURL = "loginForm"
Continue2 = "Εξουσιοδότηση"
#ButtonURL = "//button[@id='id_next']"
#WebURL = "//a[@id='id_web_app_link']"
#MonthsFromToday = "//input[@value='Run until 3 months from today']"
#LoginElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(LoginURL))
#LoginElement.click()
Continue1Element = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(ContinueButton))
Continue1Element.click()
UserElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id(UsernameURL))
UserElement.clear()
UserElement.send_keys(USER)
PasswordElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id(PasswordURL))
PasswordElement.clear()
PasswordElement.send_keys(PASS)
LogInButtonElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id(LoginButtonURL))
ButtonElement.click()
Continue2Element = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id(Continue2))
Continue2Element.click()
#WebElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(WebURL))
WebElement.click()
#MonthsElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(MonthsFromToday))
MonthsElement.click()
sleep(5)
driver.quit()
解决方案
这应该可以解决问题:
username = driver.find_element_by_css_selector("input[name='j_username']")
password = driver.find_element_by_css_selector("input[name='j_password']")
button = driver.find_element_by_css_selector("input[type='button']")
username.send_keys(USER)
password.send_keys(PASS)
button.click()
推荐阅读
- php - 在类中使用 Final 会减少内存吗?
- java - 如何快速检查字符串属于哪个范围
- c# - 如何在 .Net Core 5 api 中使用 ws-security soap 服务?
- flutter - 错误:一个文件不能属于多个库
- android - AndroidManifest.xml 此处不允许使用该属性
- python - python,tkinter,创建条形图时出现问题
- reactjs - 使多台机器可以访问流
- javascript - React js将对象转换为数组以供useState
- node.js - 使用 GridView/BoxView 组件时反应 nodegui 调用堆栈超出错误
- php - 在 PHP 中创建基于优先级的多维数组