Я пытаюсь разделить свой сценарий на разные функции (поэтому проще использовать части), однако, когда я делаю это, селен, похоже, не может найти селекторы css.
Структура папки:
- Startup.py
- Папка веб-драйвера
- , содержащая init .py
- и login.py
startup.py
from selenium import webdriver
from webtesting import login
def browser(usernamefield, passwordfield, loginbutton):
print 'Starting up Firefox'
browser = webdriver.Firefox()
print 'browsing to websiteadress'
browser.get('websiteadress')
login.loginsteps(usernamefield, passwordfield, loginbutton)
usernamefield = '#login-username'
passwordfield = 'input.input-default:nth-child(5)'
loginbutton = '.button'
if __name__=='__main__':
browser(usernamefield,passwordfield,loginbutton)
login.py
def loginsteps(usernamefield, passwordfield, loginbutton):
try:
userlogin = browser.find_element_by_css_selector(usernamefield)
print 'found <%s> element with that class name!' % (userlogin)
except:
print 'Was not able to find an element <%s> with that name.' % (usernamefield)
try:
userpass = browser.find_element_by_css_selector(passwordfield)
print 'found <%s> element with that class name!' % (userpass)
except:
print 'Was not able to find an element <%s> with that name.' % (passwordfield)
try:
logincss = browser.find_element_by_css_selector(loginbutton)
print 'found <%s> element with that class name!' % (logincss)
except:
print 'Was not able to click login.'
except:
print 'Was not able to find login element.'
Теперь, если я запускаю это, браузер запускается, но я получаю исключения на CSSселекторы, поэтому невозможно правильно запустить вторую функцию в сеансе браузера.
печатает в терминале:
- Запуск Firefox
- просмотр веб-сайта адрес
- Не удалось найти элемент <# login-username> с таким именем.
- Не удалось найти элемент с таким именем.
- Не удалось найти элемент входа в систему.
, однако, когда я тестирую запуск его в одной функции, он работает.
from selenium import webdriver
def browser(usernamefield, passwordfield, loginbutton):
print 'Starting up Firefox'
browser = webdriver.Firefox()
print 'browsing to website'
browser.get('webadress')
#login.loginsteps(usernamefield, passwordfield, loginbutton)
try:
userlogin = browser.find_element_by_css_selector(usernamefield)
print 'found usernamefield element with that class name!'
except:
print 'Was not able to find an element <%s> with that name.' % (usernamefield)
try:
userpass = browser.find_element_by_css_selector(passwordfield)
print 'found userpass element with that class name!'
except:
print 'Was not able to find an element <%s> with that name.' % (passwordfield)
try:
logincss = browser.find_element_by_css_selector(loginbutton)
print 'found loginbutton element with that class name!'
except:
print 'Was not able to find login element.'
usernamefield = '#login-username'
passwordfield = 'input.input-default:nth-child(5)'
loginbutton = '.button'
if __name__=='__main__':
startup.browser(usernamefield,passwordfield,loginbutton)
это возвращает doeОднако в этом сенарио я не могу сделать отдельные функции из частей этого сценария, превращая все это в большой беспорядок.
- Запуск Firefox
- просмотр веб-сайта
- найден элемент usernamefield с этим именем класса!
- найден элемент userpass с этим именем класса!
- найден элемент loginbutton с этим именем класса!
Как мне заставить Python Selen работать с отдельными функциями?как и в текущей настройке, мне пришлось бы копировать мой сценарий вместо возможности повторного использования кода ....