当前位置: 首页 > 知识库问答 >
问题:

Selenium WebDriver选择和输入文本

龙兴贤
2023-03-14

最近,我有了一个无头网络驱动程序,并一直在修补一些。目前,我无法通过xpath定位元素并更改其文本。下面,我试图将“entertexthere”返回控制台,然后将文本更改为类似“helloworld”的内容,然后显示新更改的元素文本。

超文本标记语言:

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

选择xpath后,我得到以下结果:

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

这一切都很好,但我对如何修改文本感到困惑。尝试在变量中存储“此处输入文本”我尝试了:

蟒蛇:

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错误处理程序中的\u响应。

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

共有1个答案

洪飞白
2023-03-14

无法将文本设置为值,需要使用send\u keys()设置元素的文本。另外,getText()是从元素获取文本的java方法,您需要在python中使用text

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
 类似资料:
  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 我想有一个依赖的数字输入。 此数字输入依赖于一个选择框,该选择框通过选择每个选项为输入创建一个特定的数字范围。 例如: 如果我们选择option2,数字输入将是min=20和max=50!如果我们选择option3,数字输入将是min=10和max=30!怎样才能创造出这样一个特征呢? 以下是我尝试过的:

  • 问题内容: 我有文字输入。当输入获得焦点时,我想选择输入内的文本。 使用jQuery,我可以这样: 我四处搜寻以尝试找到Angular方式,但是我发现的大多数示例都在处理一个指令,该指令正在监视模式属性的更改。我假设我需要一个指令来监视接收焦点的输入。我该怎么办? 问题答案: 在Angular中执行此操作的方法是创建一个自定义指令,该指令会为您自动选择。 应用如下指令: Update1 :删除了j

  • 问题内容: 我有一个像这样的简单表格(仅用于说明目的)… 我使用CSS的布局方法如下… 所有这些都很好地对齐了,除了我的元素(无论如何在Firefox中)并不总是与其他元素相同。通常,它会缩小几个像素。 我尝试过将宽度更改为像素大小(例如),但并没有改变。 使它们全部具有相同宽度的最佳方法是什么?我希望这不会再打我设置的单独,或将它们放入表… 问题答案: 解决方案是为表单元素指定盒子模型,当您使用

  • 问题内容: 是否有机会检测用户为元素类型HTML所做的每个文件选择? 之前曾多次问过这个问题,但是如果用户再次选择相同的文件,通常不会建议该事件。 问题答案: 的值设置到每个事件。即使选择了相同的路径,这也会重置的值并触发事件。 注意:如果文件以’C:\ fakepath'为前缀是正常的。这是一项安全功能,可防止JavaScript知道文件的绝对路径。浏览器仍然内部知道它。

  • 我正在创建教师表单,我想从图库中选择图像作为个人资料,我想用“选择图像”的标签更改右侧“选择图像按钮”的标签和位置 这是html 这是Css