python3selenium打印文本元素是从web页面中获取的

2024-09-30 18:17:17 发布

您现在位置:Python中文网/ 问答频道 /正文

阅读J.Kazil的“数据与Python之争”,我在这个例子中介绍了使用Selenium进行屏幕阅读。代码(遵循作者给出的代码)如下:

    # sele.py

    1 import time  
    2 from selenium import webdriver

    8 browser = webdriver.Firefox()  
    9 browser.get('http://www.fairphone.com/we-are-fairphone/')

   11 iframe = browser.find_element_by_xpath("//iframe[@id='twine-iframe-none']")  
   12 new_url = iframe.get_attribute('src')    
   13 browser.get(new_url)   
   14 time.sleep(4)  
   15   
   16 all_bubbles = browser.find_elements_by_css_selector('div.content')  
   17 for elem in all_bubbles:  
   18     print(elem.text)

我更改了这本书的一些代码:
第11行:“datawrangling”作者的原始代码只对xpath表达式使用了//iframe,这导致了一个空白页
第14行:我在这里添加了超时,因为没有超时,只会返回命令行光标
第18行:python2可以使用原始代码,但是到目前为止,将示例更改为python3仍然有效(我现在在第320页)

这样会打开一个新的浏览器窗口,加载fairphone的主页,并切换到iframe部分。这一切都很好。下一步就是打印出“气泡”的内容,但这不会发生。相反,我收集了一个相当详细的错误消息:

^{pr2}$

我在虚拟环境中使用Python3.5(操作系统是Ubuntu16)。我被困在这里,像Read the Docs这样的文档只会帮助我前进到现在的位置。 我知道有一些很酷的东西,比如Beautiulsoup或Scrapy,但是我现在想用Selenium来做这个。在

编辑:Another question被标识为可能的重复项。 这个问题是在Bugsnag和Perl的上下文中提出的。尽管如此,我还是尝试了上面提到的解决方法,添加

15 active_element = browser.switch_to_active_element()

改变

16 all_bubbles = active_element.find_elements_by_css_selector('div.content')

产生了相同的错误信息。我注意到错误消息的最后一部分确实在最后一行中嵌套了bugsnag。我不确定这与我的设置有什么关系,因为我没有使用bugsnag。不过,提到我使用的是firefox48和Selenium 2.53.6可能会有帮助


Tags: 代码importbrowsergetbytimeselenium作者