簡體   English   中英

如何使用Selenium在python中輸入文本

[英]How to use Selenium for text input in python

我正在嘗試在python中使用硒將搜索輸入網站。

從我所看到的示例中 ,將標記,類,id等作為目標,並使用

inputElement.send_keys('example')

在一個網頁上,我試圖定位一個采用郵政編碼的搜索欄,輸入一個郵政編碼,以便我可以抓取結果頁面,但遇到了麻煩。

<form class="geoLoc" action="javascript:void(0);" data-id="d866e6d3-106a-468a-8428-9fce1c8c51b6" data-baseurl="">
<fieldset class="search">
    <div class="search-input-wrap">
        <input type="tel" name="geolocation" maxlength="5" data-mask="00000" placeholder="Update Your ZIP Code" autocomplete="off">
        <div class="cta geoloc-btn">
            <button type="submit"><span>GO&nbsp;&nbsp;></span></button>
        </div>
    </div>
</fieldset>

我使用以下代碼定位表單:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://example.com")

login_form = driver.find_element_by_class_name('search-input-wrap')

login_form.send_keys("55555")

無論我使用上面的解決方案還是Paulo的答案,都會出現以下錯誤

Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/fsauceda/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 322, in send_keys
        self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing})
      File "/Users/fsauceda/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 448, in _execute
        return self._parent.execute(command, params)
      File "/Users/fsauceda/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 196, in execute
        self.error_handler.check_response(response)
      File "/Users/fsauceda/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 181, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
    Stacktrace:
        at fxdriver.preconditions.visible (file:///var/folders/tc/12qc3v0j47x0t6djfmzpb9200000gn/T/tmpem5v0u/extensions/fxdriver@googlecode.com/components/command-processor.js:9982)
        at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/tc/12qc3v0j47x0t6djfmzpb9200000gn/T/tmpem5v0u/extensions/fxdriver@googlecode.com/components/command-processor.js:12626)
        at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/tc/12qc3v0j47x0t6djfmzpb9200000gn/T/tmpem5v0u/extensions/fxdriver@googlecode.com/components/command-processor.js:12643)
        at DelayedCommand.prototype.executeInternal_ (file:///var/folders/tc/12qc3v0j47x0t6djfmzpb9200000gn/T/tmpem5v0u/extensions/fxdriver@googlecode.com/components/command-processor.js:12648)
        at DelayedCommand.prototype.execute/< (file:///var/folders/tc/12qc3v0j47x0t6djfmzpb9200000gn/T/tmpem5v0u/extensions/fxdriver@googlecode.com/components/command-processor.js:12590)

您正在查找div ,而不是input 你可以這樣做:

field = driver.find_element_by_name('geolocation')

請參閱文檔中的替代方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM