调用selenium库,可以实现校园网账号自动登录,最开始一直出现selenium “could not be scrolled into view”的错误,经过查资料,发现可能是以下原因:
没有加延时,网页还没有加载
添加time.sleep(5),但依然出现问题
可能满足属性的元素不止一个,首先查找的是隐藏的元素
增加匹配属性,在原有name属性的前提下,加入class属性,解决了问题。
中间也考虑直接向隐藏的属性通过js功能(river.execute_script("document.querySelector('input[name="upass"]').value = 'your_password'"))直接添加,但是发现没起作用。
成功代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
import time as t
username = 'your'
password = 'your'
options = Options()
options.binary_location = '/snap/firefox/3206/usr/lib/firefox/firefox' # 替换为您的 Firefox 可执行文件路径
service = Service('/snap/bin/geckodriver') # 替换为您的 GeckoDriver 可执行文件路径
driver = webdriver.Firefox(options=options, service=service)
# 创建Firefox浏览器驱动对象
#driver = webdriver.Firefox(executable_path=driver_path)
# 启动Chrome浏览器
#driver = webdriver.Firefox()
# 打开网页
driver.get('http:')
#driver.get('https://www.baidu.com/')
t.sleep(3)
# 获取用户名和密码输入框的元素
username_elem = driver.find_element(By.XPATH, '//input[@class="edit_lobo_cell" and @name="DDDDD"]')
'''
for ele0 in element0:
if ele0.is_displayed():
ele0.click()
'''
#driver.execute_script("arguments[0].setAttribute('value', 'SY20213071377')", username_elem)
#driver.execute_script("document.querySelector('input[name=\"upass\"]').value = 'zz030631272@yyy'")
#username_elem = driver.find_element(By.NAME, 'DDDDD')
password_elem = driver.find_element(By.XPATH, '//input[@class="edit_lobo_cell" and @name="upass"]')
#driver.execute_script("arguments[0].setAttribute('value', 'zz030631272@yyy')", password_elem)
# 输入用户名和密码
username_elem.click()
username_elem.send_keys(username)
t.sleep(1)
password_elem.click()
password_elem.send_keys(password)
t.sleep(1)
# 提交表单
submit_button = driver.find_element(By.XPATH,'//input[@type="submit"]')
submit_button.click()
t.sleep(3)
# 关闭浏览器
driver.quit()
标签:username,web,界面,登录,webdriver,selenium,driver,elem,password
From: https://www.cnblogs.com/YTZt/p/17753296.html