У нас есть форма с несколькими отдельными кнопками отправки, которые выполняют различные действия. Проблема в том, что у меня есть пара кнопок, которые имеют следующий HTML:
<input type="submit" name="submit" value="Submit" class="submitLink" title="Submit" />
<input type="submit" name="submit" value="Delete" class="submitLink" title="Delete" />
Теперь вы не можете найти элемент по значению с помощью стандартной функции find_control. Поэтому я написал предикатную функцию, которая нашла бы мой элемент, который я затем надеялся щелкнуть следующим образом:
submit_button = self.br.form.find_control(predicate=submit_button_finder)
self.br.submit(submit_button)
Тем не менее, оба отправляют и щелкают внутренне, вызывают элемент поиска, и ни один из методов не позволяет добавлять ключевое слово в предикат, поэтому такой вызов также не работает:
self.br.submit(predicate=submit_button_finder)
Есть ли что-то, что я пропускаю?!?
Обновление:
Добавлена вспомогательная функция для извлечения всех элементов, которые соответствуют критериям:
def find_controls(self, name=None, type=None, kind=None, id=None, predicate=None, label=None):
i = 0
results = []
try :
while(True):
results.append(self.browswer.find_control(name, type, kind, id, predicate, label, nr=i))
i += 1
except Exception as e: #Exception tossed if control not found
pass
return results
Затем заменили следующие строки:
submit_button = self.br.form.find_control(predicate=submit_button_finder)
self.br.submit(submit_button)
С:
submit_button = self.br.form.find_control(predicate=submit_button_finder)
submit_buttons = self.find_controls(type="submit")
for button in submit_buttons[:]:
if (button != submit_button) : self.br.form.controls.remove(button)
self.br.submit()