Я пишу текст в Selenium, который получает самый левый столбец таблицы и проверяет, что строки в их ячейках соответствуют списку дат, которые у меня есть. Код у меня выглядит примерно так:Проблемы с Python Selenium WebElements и .text
dates = ["20130501", "20130502", "20130506", "20130507", "20130508", "20130509", "20130510", "20130513", "20130514", "20130515"]
mytable = self.driver.find_element(By.ID, "mytable")
datecells = mytable.find_elements(By.CSS_SELECTOR, "tbody td:first-child")
for date, cell in zip(dates, datecells):
print "'{0}', '{1}'".format(date, cell.text) # For debugging
#self.assertEqual(date, cell.text)
Когда утверждают, что осталось закомментирована, я получаю это распечатывается в результате:
'20130501', '' "20130502', '' '20130506', '' '20130507', '' '20130508', '' '20130509', '' '20130510', '' '20130513', '' '20130514', '' '20130515', ''
Странная вещь, если я поставил точку останова на печать (с использованием MyEclipse с PyDev), и посмотрите на ячейку на вкладке переменные Pydev отладки, прежде чем это выход, я могу видеть правильный текст, и выводит код, как и ожидалось:
'20130501', '20130501' '20130502', '20130502' '20130506', '20130506' '20130507', '20130507' '20130508', '20130508' '20130509', '20130509' '20130510', '20130510' '20130513', '20130513' '20130514', '20130514' '20130515', '20130515'
есть некоторые странные набл erver effect quirk свойств WebElement .text, где это может быть только правильно оценено этим отладчиком, или есть какое-то условие, которое я должен ожидать, чтобы получить правильные значения из ячеек без необходимости проходить через них?
Кажется, что-либо во время или после назначения 'datecells' (включая переход в функцию выполнения WebDriver и расширение его результата до его возврата), я могу сломать, посмотреть на элементы в отладчике и продолжить, в результате в правильных значениях. – TransatlanticFoe