i am trying to automatize login to a few webpages (Firefox) through python and selenium. When i try my code outside of a function it works fine but if i call it in a function it says
RemoteError@chrome://remote/content/shared/RemoteError.jsm:12:1 WebDriverError@chrome://remote/content/shared/webdriver/Errors.jsm:192:5 NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.jsm:404:5 element.find/</<@chrome://remote/content/mari.nette/element.js:291:16
the code itself looks like this
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)
to get the user data into the page. it works if done outside of the function.
You need to pass the driver into each function:
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(webpage, driver):
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, driver):
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, driver)
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, driver)
password_box.send_keys(pwd)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.