2014-09-07 3 views
2

Недавно я смог получить безголовый webdriver и пошел и потрудился с некоторыми. В настоящее время мне не удается найти элемент по его xpath и изменить его текст. Ниже я пытаюсь вернуть «ENTER TEXT HERE» на консоль, а затем изменить текст на что-то вроде «hello world», а затем отобразить вновь измененный текст элемента.Selenium WebDriver выбор и ввод текста

HTML:

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

После выбора XPath я получаю это:

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

Это все хорошо и хорошо, но я запутался, как идти об изменении текста. Попытка сохранить «ввести текст» в переменной я попытался:

Python:

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 

Любая помощь или понимание было бы весьма признателен. Спасибо!

EDIT:

Благодаря Ричарду за указание на send_keys(), Я сейчас в затруднительном положении, где, если нет текста по умолчанию, и вы пытаетесь отправить строку, он вызывает исключение. Трассировка ведет к .check_response в обработчике ошибок webdriver.

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 

ответ

0

Вы не можете установить текст на значение, вам нужно использовать 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 
+0

Ahhh, я вижу, спасибо! Я также проверяю ошибки, и если я передаю пустую строку или если поле пусто по умолчанию, оно выдает ошибку ('\ undefined \' не является объектом). Это связано с send_keys(), правильно? Знаете ли вы, что есть обходной путь? спасибо за помощь –

Смежные вопросы