Почему нельзя импортировать подкласс из основного класса в python - PullRequest
0 голосов
/ 12 июля 2020

Привет, Selenium. Я хочу импортировать дочерние классы из библиотеки, но не смог. Ниже все в порядке;

from Selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

Но почему я не могу сделать это:

from Selenium import webdriver
_WebDriverWait = webdriver.support.ui.WebDriverWait
_expected_conditions = webdriver.support.expected_conditions

Причина, по которой я хочу сделать это, находится в редакторе, я пытаюсь своего рода песочница и хотите, чтобы пользователь мог использовать все подклассы предварительно импортированного селена. Как мне добиться этого импорта?

1 Ответ

1 голос
/ 15 июля 2020

Первый работает, а второй - нет, потому что путь в части from оператора импорта работает иначе, чем путь в обычной ссылке.

В предложении from Python готов следовать по пути в структуре каталогов, даже если не все имена в пути были ранее импортированы. Для обычной справки он не желает этого делать. t импортировано при импорте пакета. "

Иногда сценарий __init.py__ для пакета импортирует часть или все содержимое пакета за вас, поэтому вам не нужно об этом беспокоиться, но в этом случае, Selenium не делает этого для пакета support в сценарии __init.py__ для пакета webdriver.

Таким образом, вы можете сделать ссылки, подобные тем, которые во втором случае работают, добавив строки для импорта модули ui и expected_conditions явно:

from selenium.webdriver.support import ui, expected_conditions
_WebDriverWait = ui.WebDriverWait
_expected_conditions = expected_conditions

Это может заставить такой код во втором случае работать, но вы можете не считать это большим улучшением по сравнению с кодом в первом случае.

...