execute ()
execute () метод выполняет все сохраненные действия.
Согласно реализации ActionChains , perform()
isкак и другой метод из класса ActionChains , например move_to_element()
, click()
и т. д.
Теперь класс ActionChains используется для автоматизации низкоуровневых взаимодействий, таких как мышьдвижения, действия кнопок мыши, нажатие клавиш и взаимодействия с контекстным меню, которые полезны для выполнения сложных действий, таких как наведение курсора и перетаскивание по цепочке метода .
Документация четко упоминает, чтобы генерироватьдействия пользователя, когда вы вызываете методы для действий над объектом ActionChains, эти действия сохраняются в очереди в объекте ActionChains .Наконец, когда вы вызываете perform(
), события запускаются в том порядке, в котором они поставлены в очередь.
Итак, следуя этой логике, вы были совершенно правы, указав ... ActionChains по существуничего не делайте и не выполняйте никаких действий без perform()
... , и при статическом анализе кода невозможно отследить этот тип проблемы на раннем этапе.
Даже в IDE, например Eclipse, PyCharm или даже Sublime Text3 проприетарный кросс-платформенный редактор исходного кода с Python интерфейс прикладного программирования (API) не предупредит об этом.
В качестве примера Eclipse не будет жаловаться на пропавшее perfrom()
:
Но Eclipse будет жаловаться на Bad Indentation :
Эти случаи аналогичны классическому случаю IDE, которые не жалуются, когда Ожидаемые условия который должен вызываться с кортежем , и это не функция, а фактически класс, инициализатор которого ожидает только 1 аргумент за пределами неявного self :
class element_to_be_clickable(object):
# .....
def __init__(self, locator):
# .....
Снимок среды IDE: