Python Selenium WebElements和.text的问题

我正在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',''

奇怪的是,如果我在打印上放置一个断点(将MyEclipse与PyDev结合使用),并在输出之前查看PyDev Debug的变量选项卡中的单元格,那么我可以看到正确的文本,并且代码按预期输出:


'20130501','20130501'

'20130502','20130502'

'20130506','20130506'

'20130507','20130507'

'20130508','20130508'

'20130509','20130509'

'20130510','20130510'

'20130513','20130513'

'20130514','20130514'

'20130515','20130515'

WebElement .text属性是否存在一些奇怪的观察者效果怪癖,只能通过此调试器正确评估,还是有一些条件我需要等待才能从单元格中获取正确的值而不必单步执行?


月关宝盒
浏览 248回答 1
1回答

一只甜甜圈

在使用PhantomJS的WebDriver进行了一些测试之后,我能够弄清楚这是Firefox的WebDriver的一个问题,并且发现了之前的问题:WebElement getText()在Firefox中是一个空字符串,如果元素在屏幕上不可见因此,将for循环更改为for date, cell in zip(dates, datecells):    self.driver.execute_script("arguments[0].scrollIntoView(true);", cell)    print "'{0}', '{1}'".format(date, cell.text)    self.assertEqual(date, cell.text)为了在获取每个单元格的文本之前将其滚动到视图中,我得到了预期的输出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python