GVKun编程网logo

如何使用Python Selenium在文本框(输入)中定位和插入值?(selenium python 文本框输入信息)

18

本文将带您了解关于如何使用PythonSelenium在文本框的新内容,同时我们还将为您解释输入中定位和插入值?的相关知识,另外,我们还将为您提供关于pythonselenium将密钥发送到只读文本框

本文将带您了解关于如何使用Python Selenium在文本框的新内容,同时我们还将为您解释输入中定位和插入值?的相关知识,另外,我们还将为您提供关于python selenium将密钥发送到只读文本框、Python+Selenium 清除输入文本 + 刷新浏览器、Python+Selenium+Unittest 框架使用 ——Selenium—— 定位元素(二)、python-3.x – 如何使用python减慢selenium脚本中send_keys动作的速度?的实用信息。

本文目录一览:

如何使用Python Selenium在文本框(输入)中定位和插入值?(selenium python 文本框输入信息)

如何使用Python Selenium在文本框(输入)中定位和插入值?(selenium python 文本框输入信息)

我具有以下HTML结构,并且尝试使用Selenium输入值NUM

<div>    <div>My title</div>    <div></div>        <divarea="W">                             <span>PAGE <input id="a1" type="txt" NUM="" />  of <span id="MAX"></span> </span></div>

这是我编写的代码:

head = driver.find_element_by_class_name("MY_HEADING_A")frame_elem = head.find_element_by_class_name("PageText")# Following is a pseudo code. # Basically I need to enter a value of 1, 2, 3 etc in the textbox field (NUM) # and then hit RETURN key.## txt  = frame_elem.find_element_by_name("NUM")## txt.send_keys(Key.4"

如何获取此元素并输入值?

答案1

小编典典

假设您的页面在“ http://example.com ”下可用

from selenium import webdriverfrom selenium.webdriver.common.keys import Keysdriver = webdriver.Firefox()driver.get("http://example.com")

按ID选择元素:

inputElement = driver.find_element_by_id("a1")inputElement.send_keys(''1'')

现在您可以模拟击回车键:

inputElement.send_keys(Keys.ENTER)

或者,如果您是一种表格,您可以提交:

inputElement.submit()

python selenium将密钥发送到只读文本框

python selenium将密钥发送到只读文本框

我正在尝试使用以下pythonselenium代码将密钥发送到以下字段

<input type="text" name="date_startDateSql" readonly=""onfocus="setday(this)">

Selenium Python代码:

element=driver.find_element_by_name(''date_startDateSql'')element.send_keys(''12/10/2017'')

我没有收到任何错误或异常,但无法将密钥发送到此元素中。我是python selenium的新手,如果有人可以建议如何将密钥发送到只读字段,我将不胜感激。

答案1

小编典典

发送键之前,请删除输入的 readonly 属性:

driver.execute_script(''document.getElementsByName("date_startDateSql")[0].removeAttribute("readonly")'')

Python+Selenium 清除输入文本 + 刷新浏览器

Python+Selenium 清除输入文本 + 刷新浏览器

 

#coding=utf-8 
   
from selenium import webdriver 
import time
   
driver = webdriver.Chrome() 
driver.maximize_window() 
driver.implicitly_wait(6) 
   
driver.get("https://www.baidu.com") 
driver.find_element_by_id("kw").send_keys("Selenium")
time.sleep(5)
try:
    driver.find_element_by_id("kw").clear()
    print("Passed:Clear Success")
except Exception as e:
    print("Failed",format(e))
 
driver.quit()

 

Python+Selenium+Unittest 框架使用 ——Selenium—— 定位元素(二)

Python+Selenium+Unittest 框架使用 ——Selenium—— 定位元素(二)

1、定位元素(id、name、class、link、partial link)

(1)find_element_by_id()

用百度定位测试,用 firebug 查看定位元素 ,输入框的 id 为 “kw”,【百度一下】按钮的 id 为 “su”。

from selenium import webdriver                            #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("python")       #输入框输入“python”
driver.find_element_by_id("su").click()            #点击【百度一下】按钮

 (2)find_element_by_name()

用百度定位测试,用 firebug 查看定位元素 ,输入框的 name 为 “wd”,【百度一下】按钮没有 name 属性,这里用 id 定位,id 为 “su”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_name("wd").send_keys("python")     #输入框输入“python”
driver.find_element_by_id("su").click()                  #点击【百度一下】按钮

(3)find_element_by_class_name()

百度的 class 属性值是包含空格,用 class 无法定位百度。这里我改用 bing 搜索为测试实例,用 firebug 查看定位元素 ,输入框的 class 为 “b_searchbox”,搜索按钮的 class 为 “”b_searchboxSubmit“”

from selenium import webdriver                                            #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://cn.bing.com/")
driver.find_element_by_class_name("b_searchbox").send_keys("python")     #输入框输入“python”
driver.find_element_by_class_name("b_searchboxSubmit").click()           #点击【百度一下】按钮

(4)find_element_by_link_text()

find_element_by_link_text () 是根据链接的文本来定位。以百度为定位测试,找百度页面 “新闻” 这个元素

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_link_text("新闻").click()        #打开新闻链接

(5)find_element_by_partial_link_text()

find_element_by_partial_link_text () 是根据链接的文本包含某个字符来定位。以百度为定位测试,找百度页面 “新闻” 中的 “闻”:

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_partial_link_text("").click()   #打开新闻链接

 2、xpath 定位元素

(1)通过绝对路径定位。一般很少用这种绝对路径定位,除非其他定位元素无法准确定位,才会用到。

用百度定位测试,用 firebug 和 firepath 查看定位元素 ,输入框的绝对路径为 “html/body/div [1]/div [1]/div/div [1]/div/form/span [1]”,【百度一下】按钮的绝对路径为 “html/body/div [1]/div [1]/div/div [1]/div/form/span [2]/input”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[1]").send_keys("python")     #输入框输入“python”
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input").click()

通过以上代码去执行,找不到输入框位置。是因为输入框定位位置不准确。firebug 和 firepath 只是辅助工具,有时会出错,需要更新手动定位。

所以输入框的绝对路径为 “html/body/div [1]/div [1]/div/div [1]/div/form/span [1]/input”,【百度一下】按钮的绝对路径为 “html/body/div [1]/div [1]/div/div [1]/div/form/span [2]/input”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input").send_keys("python")     #输入框输入“python”
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input").click()

 (2)简化 xpath

WebDriver ELement Locator 定位神器,可以快速定位。点鼠标右键

 

 

a. 通过元素属性进行定位 - id

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("//input[@id=''kw'']").send_keys("python")     #输入框输入“python”
driver.find_element_by_xpath("//input[@id=''su'']").click()                   #点击【百度一下】按钮

b. 通过元素属性进行定位 - name

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("//input[@name=''wd'']").send_keys("python")     #输入框输入“python”
driver.find_element_by_xpath("//input[@id=''su'']").click()                   #点击【百度一下】按钮

还有很多定位没有讲,掌握以上定位可以满足工作需求,不需要大家全部掌握。后续我会再补充。

python-3.x – 如何使用python减慢selenium脚本中send_keys动作的速度?

python-3.x – 如何使用python减慢selenium脚本中send_keys动作的速度?

我目前正在 python中创建一个selenium脚本.我需要使用send_keys函数在文本框中输入内容.到目前为止,它正在这样做.但是,为了观察我需要减慢send_keys填充文本字段的速度.有没有办法可以做到这一点?另外,selenium中有send_keys的替代品吗?
感谢和放大器;问候
卡兰

解决方法

您可以在发送每个字符后插入暂停.例如,如果您的代码如下所示:

el = driver.find_element_by_id("element-id")
el.send_keys("text to enter")

您可以将其替换为:

el = driver.find_element_by_id("element-id")
text = "text to enter"
for character in text:
    el.send_keys(character)
    time.sleep(0.3) # pause for 0.3 seconds

关于如何使用Python Selenium在文本框输入中定位和插入值?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于python selenium将密钥发送到只读文本框、Python+Selenium 清除输入文本 + 刷新浏览器、Python+Selenium+Unittest 框架使用 ——Selenium—— 定位元素(二)、python-3.x – 如何使用python减慢selenium脚本中send_keys动作的速度?等相关知识的信息别忘了在本站进行查找喔。

本文标签: