2014-02-17 1 views
0

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, чтобы открыть локальную копию страницы и нажать на ссылку проблемы - страница назначения открыта без браузера.
+0

Существует ли объект, когда вы нажимаете кнопку? Поскольку в ожидании есть тайм-аут, и если он попадает в таймаут, вы можете пройти туда, не имея объекта (я предполагаю). – towr

+0

, если он достигнет таймаута, не я бы получил ошибку ElementNotFound или TimeoutException? Или что-то подобное, что приведет к завершению выполнения (не браузер перестает работать?) Кроме того, я знаю, что он получает obj.click, потому что «щелкнуть объект» печатает на консоли. – JoeyC

+0

Вы правы, согласно документации, он должен вызывать исключение, если он не находит элемент. Вы пытались вручную реплицировать проблему (просто щелкнув элемент в браузере или нажав кнопку мыши через консоль)?Что касается публикации html или нет, вы можете начать с удаления как можно большего количества страницы, что поможет сузить проблему и сделать ее менее важной, если вам нужно разделить html. – towr

ответ

1

Argh, это такое разочаровывающее решение - похоже, это было из-за панели инструментов Skype который был автоматически установлен с последним обновлением Firefox.

Стоит отметить, что он не исчезнет легко. Если вы перейдете в Firefox -> Extensions, это позволит вам отключить его. Вы должны перейти в «Программы и функции» и удалить его оттуда. После этого он работал как шарм!

FFS MICROSOFT !!