2016-02-16 3 views
3

Я в настоящее время программирую примеры в «Test-Driven Development with Python», точнее, первый функциональный тест. Но по какой-то странной причине send_keys работает неправильно. Это то, что я пытаюсь сделать прямо сейчас, и, кстати, я изменил неявное ожидание явных ожиданий!Selenium send_keys зависает на Python

inputbox = self.browser.find_element_by_id('id_new_item') 
    self.assertEqual(# This passes, it's here just for completeness 
     inputbox.get_attribute('placeholder'), 
     'Enter a To-Do item' 
    ) 
    inputbox.send_keys('Buy peacock feathers') 
    inputbox.send_keys(Keys.ENTER) # Everything okay up to here 
    WebDriverWait(self.browser, 10).until(
     EC.text_to_be_present_in_element((By.CSS_SELECTOR, "table#id_list_table tr td"), "Buy peacock feathers") 
    ) 
    table = self.browser.find_element_by_id('id_list_table') 

    rows = table.find_elements_by_tag_name('tr')   
    self.assertIn('1: Buy peacock feathers', [row.text for row in rows]) 

    inputbox1 = self.browser.find_element_by_id('id_new_item') # Changed the variable only to test if it would hang too - and it does 
    inputbox1.send_keys('Use peacock feathers to make a fly') 
    inputbox1.send_keys(Keys.ENTER) # This hangs 
    self.fail() 
    WebDriverWait(self.browser, 10).until(
     EC.text_to_be_present_in_element((By.CSS_SELECTOR, "table#id_list_table tr td"), "Use peacock feathers to make a fly") 
    ) 

Он никогда не достигает self.fail(). Я попытался переместить его на предыдущую строку, и тест не удался, как и следовало ожидать. Но inputbox1.send_keys(Keys.ENTER) никогда не работает, и когда я вижу браузер в качестве теста, inputbox1.send_keys('Use peacock feathers to make a fly') никогда не пишет «Использовать перья павлина, чтобы сделать муху» в поле ввода.

Что происходит? Я использую последний Selenium ( Я думаю, я скачал его пару дней назад только что проверил, у меня есть последняя версия), версии Python и Django, и это открывает Firefox Developer Edition на моем ноутбуке. Спасибо.

EDIT: Я пробовал disabling multi-process in Firefox, но результат не изменился - он все еще зависает при попытке записи и нажатия клавиши ввода.

+0

Как насчет 'inputbox1.send_keys (Keys.RETURN)'? – alecxe

+0

Кроме того, какие версии селена и firefox вы используете? – alecxe

+0

Просто сделал это, тот же выход. Firefox Developer Edition - версия 46.0a2, а Selenium - 2.52.0. –

ответ

1

Благодаря alexce за помощь!

я изменил следующее в моем тестовом классе:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

def setUp(self): 
    binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe') 
    self.browser = webdriver.Firefox(firefox_binary=binary) 

проблему? Я использовал Firefox Developer Edition, который, по-видимому, полностью не поддерживается Selenium. Поэтому я просто заставил Selenium загружать мой обычный Firefox, и он больше не висит!

Смежные вопросы