Python выполняет команду перед вызовом (общий вопрос) - PullRequest
0 голосов
/ 27 февраля 2019

РЕДАКТИРОВАТЬ: Я извиняюсь, но я считаю, что это не тот вопрос, на который меня направляют ссылки.Я попробую это снова.Моя проблема заключается в следующем:

У меня есть файл с именем webElements.py, в котором я определил множество переменных, содержащих команды selenium find_element_by_blabla ().Например:

class CwebElements:

    someBeingBuilt = (logInFile.browser.find_element_by_xpath("//* 
    [@name='zeit']"))

Я использую эти переменные в другом файле, основной код, например:

if webElements.CwebElements.someBeingBuilt:
    print('Busy!')

Пока все хорошо.Но когда я теперь выполняю основной файл, я сразу же получаю следующую ошибку (в самом начале кода, даже до того, как он попадет на страницу, где он должен искать этот элемент):

"... нет такого элемента: невозможно найти элемент: {"method": "xpath", "selector": "// * [@ name = 'zeit']"} "

Iпопытался использовать лямбду следующим образом:

class CwebElements:

    someBeingBuilt = lambda: (logInFile.browser.find_element_by_xpath("//* 
    [@name='zeit']"))

но когда я это сделаю, программа будет работать до тех пор, пока не достигнет страницы, где он должен искать этот элемент «Zeit», и всегда будет печатать «Busy!».Кроме того, когда я пишу это так:

if logInFile.browser.find_element_by_xpath("//* 
    [@name='zeit']"):
    print('Busy!')

это на самом деле работает, так что дело не в неправильном кодировании (я полагаю), а в проблеме Python, желающей выполнить команды Selenium, хранящиеся в переменных, вернов начале, а не только тогда, когда они нужны.

Надеюсь, теперь все стало понятнее.Большое спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...