我正在尝试通过python和selenium自动登录一些网页(Firefox)。当我在函数之外尝试我的代码时,它工作正常,但如果我在函数中调用它,它会说
jsm:192:5没有这样的元素错误@chrome://remote/content/shared/webdriver/错误。jsm:404:5元素。查找/〈/〈@chrome://remote/content/marionette/元素。js:291:16
代码本身如下所示
from selenium import webdriver from time import sleep from getpass import getpass from subprocess import Popen, PIPE from selenium.webdriver.common.by import By
webpages = dict(zip(['name','name2', 'name3'],['webpage','weboage2', 'werbpage3'])) usr='user@gmail.com'
def getuserbox(name):
if webpage == 'name':
foundelement = driver.find_element(By.ID,"mat-input-0")
if webpage == 'name2':
foundelement = driver.find_element(By.NAME, 'userId')
else:
foundelement = driver.find_element(By.NAME,'userid') return foundelement
def getpwdbox(webpage):
if webpage == 'name':
foundelement = driver.find_element(By.ID,"mat-input-1")
elif webpage == 'name2':
foundelement = driver.find_element(By.NAME,'password')
else:
foundelement = driver.find_element(By.ID,'password') return foundelement
for name, page in webpages.items():
driver = webdriver.Firefox()
driver.get(page)
print ("Opened page "+name+'/n'+page) sleep(2)
username_box = getuserbox(name)
print('found box and trying to send usr')
sleep(1)
username_box.send_keys(usr)
print ("Email Id entered")
sleep(1)
password_box = getpwdbox(name)
password_box.send_keys(pwd)
以将用户数据放入页面。如果在函数外部完成,则可以工作。
1条答案
按热度按时间zfycwa2u1#
您需要将驱动程序传递到每个函数中: