テーブルの一番左の列を取得し、セル内の文字列が私が持っている日付のリストと一致することを確認するテキストを Selenium で書いています。私が持っているコードは次のようになります。
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', ''
奇妙なことに、出力にブレークポイントを設定し (PyDev で MyEclipse を使用)、出力前に PyDev Debug の [変数] タブのセルを見ると、適切なテキストが表示され、コードが期待どおりに出力されます。
「20130501」、「20130501」 「20130502」、「20130502」 「20130506」、「20130506」 「20130507」、「20130507」 「20130508」、「20130508」 「20130509」、「20130509」 「20130510」、「20130510」 「20130513」、「20130513」 「20130514」、「20130514」 「20130515」、「20130515」
このデバッガーによってのみ適切に評価できる WebElement .text プロパティの奇妙なオブザーバー効果の癖はありますか、それともステップスルーすることなくセルから適切な値を取得するために待機する必要がある条件がありますか?