1

セレンを使用してページをhtml全体として保存しようとしていますが、ページにはドロップダウンリストがあります。そのリストには2つの要素があり、それぞれをクリックした後にhtml全体を保存したいと考えています。

以下は私が使用しているコードです:

    devlink='http://www.t-mobile.com/content/tmo-wem/en/index/cell-phones/nokia-lumia-521.html'
    devname= devlink[devlink.rfind("/")+1:]
    ignore_tags=('script','noscript','style')
    with contextlib.closing(webdriver.Firefox()) as browser:
        browser.get(devlink) # Load page
        dropdown = browser.find_element_by_class_name('dropdown-menu')
        elements = dropdown.find_elements_by_tag_name('li')
        i=0
        for element in elements:
            element.click()
            i = i+1
            time.sleep(2)
            content=browser.page_source
            cleaner=clean.Cleaner()
            content=cleaner.clean_html(content)    
            with open(str(i)+devname,'w') as f:
               f.write(content.encode('utf-8'))

このコードは私にエラーを与えています。そのトレースバックは次のようになりますTraceback (most recent call last): File "D:\Windows Phone\Pricing\August\2013-08-05\tmo test\tmo_us_selenium.py", line 52, in <module> element.click() File "C:\Python27\lib\site-packages\selenium-2.33.0-py2.7.egg\selenium\webdriver\remote\webelement.py", line 54, in click self._execute(Command.CLICK_ELEMENT) File "C:\Python27\lib\site-packages\selenium-2.33.0-py2.7.egg\selenium\webdriver\remote\webelement.py", line 228, in _execute return self._parent.execute(command, params) File "C:\Python27\lib\site-packages\selenium-2.33.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 165, in execute self.error_handler.check_response(response) File "C:\Python27\lib\site-packages\selenium-2.33.0-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 158, in check_response raise exception_class(message, screen, stacktrace) ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' ; Stacktrace: at fxdriver.preconditions.visible (file:///c:/users/abhina~1.tal/appdata/local/temp/tmpwnu8em/extensions/fxdriver@googlecode.com/components/command_processor.js:7736) at DelayedCommand.prototype.checkPreconditions_ (file:///c:/users/abhina~1.tal/appdata/local/temp/tmpwnu8em/extensions/fxdriver@googlecode.com/components/command_processor.js:10437) at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/abhina~1.tal/appdata/local/temp/tmpwnu8em/extensions/fxdriver@googlecode.com/components/command_processor.js:10456) at DelayedCommand.prototype.executeInternal_ (file:///c:/users/abhina~1.tal/appdata/local/temp/tmpwnu8em/extensions/fxdriver@googlecode.com/components/command_processor.js:10461) at DelayedCommand.prototype.execute/< (file:///c:/users/abhina~1.tal/appdata/local/temp/tmpwnu8em/extensions/fxdriver@googlecode.com/components/command_processor.js:10401)

このコードは、見つかった 2 つの要素をクリックできません。この問題の解決にご協力ください。

4

1 に答える 1

0

Selenium 2.33 は Firefox 21 以前をサポートします。FF 22 をサポートするには、Selenium の更新を待つ必要があります。詳細については、このスレッドを参照してください。Google には、Selenium 2.33 および FF 22 に関する同様の問題について議論するスレッドが多数あります。

于 2013-08-05T09:48:01.337 に答える