簡體   English   中英

Selenium WebDriver選擇和輸入文本

[英]Selenium WebDriver selection and entering text

最近,我能夠安裝一個無頭的網絡驅動程序,並且一直在進行一些修補。 目前,我在按元素的xpath定位和更改其文本時遇到麻煩。 在下面,我試圖將“ ENTER TEXT HERE”返回到控制台,然后將文本更改為“ hello world”,然后顯示新更改的元素文本。

HTML:

<div id="textfield" class="newInput">
    <div>ENTER TEXT HERE</div>
</div>

選擇xpath后,我得到以下信息:

//*[@id='textfield']/div

一切都很好,但我對如何更改文本感到困惑。 嘗試在一個變量中存儲“ ENTER TEXT HERE”:

蟒蛇:

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

defaultText = browser.find_element_by_xpath("//*[@id='textfield']/div").getText()
print defaultText
browser.find_element_by_xpath("//*[@id='textfield']/div").textContent = "hello world"
defaultText = browser.find_element_by_xpath("//*[@id='textfield']/div").getText()
print defaultText


#Attempt to store "ENTER TEXT HERE" into variable
#Attempt to print ENTER TEXT HERE in console
#Change text to "hello world"
#Update string in variable
#Attempt to print hello world in console

任何幫助或見識將不勝感激。 謝謝!

編輯:

感謝Richard指出send_keys(),我現在處於困境中,如果默認情況下沒有文本,而您嘗試發送字符串,它將引發異常。 跟蹤在webdriver錯誤處理程序中導致.check_response。

Traceback (most recent call last):
      File "test.py", line 116, in <module>
        browser.find_element_by_xpath("//*[@id='textfield']/div").send_keys("hello world")
      File "C:\Python26\lib\site-packages\selenium\webdriver\remote\webelement.py", line 293, in send_keys
          self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing})
      File "C:\Python26\lib\site-packages\selenium\webdriver\remote\webelement.py", line 370, in _execute
          return self._parent.execute(command, params)
      File "C:\Python26\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute
          self.error_handler.check_response(response)
      File "C:\Python26\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 164, in check_response
          raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: u'{"errorMessage":"\'undefined\'             
is not an object (evaluating \'b.value.length\')","request":{"headers":   
{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-    
Length":"147","Content-Type":"application/json;charset=UTF8","Host":"127.0.0.1:XXXXX",
"User-Agent":"Python-urllib/2.6"},"httpVersion":"1.1","
method":"POST","post":"{\\"sessionId\\": \\"561558d0-36a9-11e4-c9e7-c90efed32dfc\\",     
\\"id\\": \\":wdc:1410101175394\\", \\"value\
\": [\\"h\\", \\"e\\", \\"l\\", \\"l\\", \\"o\\", \\" \\", \\"w\\", \\"o\\", \\"r\\",     
\\"l\\", \\"d\\"]}","url":"/value","urlParsed":
{"anchor":"","query":"","file":"value","directory":"/","path":"/value","relative":"/value",
"port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"",
"source":"/value","queryKey":{},"chunks":["value"]},"urlOriginal":"/session/561
558d0-36a9-11e4-c9e7-c90efed32dfc/element/%3Awdc%3A1410101175394/value"}}' ; 
Screenshot: available via screen

您無法將文本設置為值,需要使用send_keys()來設置元素的文本。 另外, getText()是從元素獲取文本的java方法,您需要將text與python一起使用。

defaultText = browser.find_element_by_xpath("//*[@id='textfield']/div").text
print defaultText
browser.find_element_by_xpath("//*[@id='textfield']/div").send_keys("hello world")
defaultText = browser.find_element_by_xpath("//*[@id='textfield']/div").text
print defaultText

暫無
暫無

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

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