Python Selenium WebElements和.text的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python Selenium WebElements和.text的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1651字,纯文字阅读大概需要3分钟。
内容图文
![Python Selenium WebElements和.text的问题](/upload/InfoBanner/zyjiaocheng/677/6aa8c01b48664052ac18441dd38f7328.jpg)
我正在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属性是否存在一些奇怪的观察者效果怪癖,只能通过此调试器对其进行正确评估,或者是否应该等待某些条件才能从单元格中获取正确的值而不必单步执行?
解决方法:
在使用PhantomJS的WebDriver进行了一些测试之后,我能够弄清楚这是Firefox的WebDriver的一个问题,并且找到了先前询问的问题:WebElement getText() is an empty string in Firefox if element is not physically visible on the screen
因此,将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)
为了在获取每个单元格的文本之前将其滚动到视图中,我得到了预期的输出.
内容总结
以上是互联网集市为您收集整理的Python Selenium WebElements和.text的问题全部内容,希望文章能够帮你解决Python Selenium WebElements和.text的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。