Настройка
Я использую селен для множества вещей и обнаружил, что снова и снова определяю одни и те же функции.
Я решил определить функции в отдельном файле и импортировать их в мои рабочие файлы.
Простой пример
Если я определяю функции и выполняю все в одном файле, все работает нормально. См. Простой full_script.py ниже,
# import webdriver
from selenium import webdriver
# create browser
browser = webdriver.Firefox(
executable_path='/mypath/geckodriver')
# define short xpath function
def el_xp(x):
return browser.find_element_by_xpath(x)
# navigate to url
browser.get('https://nos.nl')
# obtain title first article
el_xp('/html/body/main/section[1]/div/ul/li[1]/a/div[2]/h3').text
Это успешно возвращает название первой статьи на этом новостном сайте.
Задача
Теперь, когда я разделяю скрипт на xpath_function.py и run_text.py и сохраняю их в папке test
на моем рабочем столе, ничего не происходит отлично работает
xpath_function.py
# import webdriver
from selenium import webdriver
# create browser
browser = webdriver.Firefox(
executable_path='/mypath/geckodriver')
# define short xpath function
def el_xp(x):
return browser.find_element_by_xpath(x)
run_test.py
import os
os.chdir('/my/Desktop/test')
import xpath_function as xf
# import webdriver
from selenium import webdriver
# create browser
browser = webdriver.Firefox(
executable_path='/Users/lucaspanjaard/Documents/RentIndicator/geckodriver')
browser.get('https://nos.nl')
xf.el_xp('/html/body/main/section[1]/div/ul/li[1]/a/div[2]/h3').text
Выполнение run_test.py
приводит к открытию 2-х браузеров, из которых один переходит на новостной сайт и появляется следующая ошибка,
NoSuchElementException: Unable to locate element:
/html/body/main/section[1]/div/ul/li[1]/a/div[2]/h3
Полагаю, проблема в том, что и в xpath_function.py
, и в run_test.py
я определяю browser
.
Однако, если я не определяю браузер в xpath_function.py
, я получаю ошибку в этом файле, что браузер не определен.
Как мне решить эту проблему?