WebDriver с Python привязок v2.39.0 Firefox 27,0 (но вопрос также воспроизводится с Firefox «последним», Firefox 26,0 и Firefox 27,0)Как я могу остановить Firefox от зависания после нажатия ссылки?
В приведенном ниже коде, как только выполнение хиты obj.click()
для ссылок на определенной странице, браузер зависает. Если сценарий убит с помощью Ctrl + C в терминале (Windows), браузер перестает висит. Если оставить его на своих устройствах, браузер, похоже, будет вешать бесконечно.
Я не уверен, если мне разрешено размещать HTML-код на странице проблемы, но я могу договориться об этом с моей командой.
Этот же код используется для работы с тем же самым элементом, который вызывает проблемы сейчас. Я подозревал, что это было что-то делать с авто обновления Firefox, но понижение не решило проблему (см вещей, которые я пробовал раздел для более подробной информации и вещей, которые я пробовал)
def wait_and_click(obj_id, timeout=global_timeout, locator_attribute = 'ID'):
print('waiting for ' + obj_id)
obj = WebDriverWait(driver, timeout).until(EC.element_to_be_clickable((eval('By.' + locator_attribute), obj_id)))
print("about to click object")
obj.click()
print("about to return from wait_and_click")
return obj
вещей я попытался:
- вручную тиражирование вопроса (не браузер зависнуть)
- пытался понижая к различным версиям Firefox и удалить все расширения
- пытавшихся пропуская obj.click, когда если obj_id равен элемент проблемы - браузер не виснет (но сценарий никуда не идет: р, потому что что-то должно быть нажата)
- пытались более традиционный WebDriverWait для элемента на странице , а затем find_element_by_xpath - тот же браузер повесить
- пытался расположения в одном месте элемент с помощью другого атрибута (изначально попытался использовать LINK_TEXT, также попытался через XPATH - без разницы), а затем нажав
- попытался найти разные ссылки на одной странице - тот же браузер зависает
- пытался найти ссылки на разные страницы той же сети приложение - нет зависания браузера
- попытался сохранить источник страницы, содержащей ли nk и той страницы, на которую указывает ссылка. Я получил webdriver, чтобы открыть локальную копию страницы и нажать на ссылку проблемы - страница назначения открыта без браузера.
Существует ли объект, когда вы нажимаете кнопку? Поскольку в ожидании есть тайм-аут, и если он попадает в таймаут, вы можете пройти туда, не имея объекта (я предполагаю). – towr
, если он достигнет таймаута, не я бы получил ошибку ElementNotFound или TimeoutException? Или что-то подобное, что приведет к завершению выполнения (не браузер перестает работать?) Кроме того, я знаю, что он получает obj.click, потому что «щелкнуть объект» печатает на консоли. – JoeyC
Вы правы, согласно документации, он должен вызывать исключение, если он не находит элемент. Вы пытались вручную реплицировать проблему (просто щелкнув элемент в браузере или нажав кнопку мыши через консоль)?Что касается публикации html или нет, вы можете начать с удаления как можно большего количества страницы, что поможет сузить проблему и сделать ее менее важной, если вам нужно разделить html. – towr