python使用selenium执行JS快速完成超长字符串的输入

使用selenium的 .send_keys 方法能够满足大多数情况的输入操作,但是在输入内容很多的情况下,使用该方法会消耗很多时间。

此时可以使用selenium执行js的  .innerHTMLf方法快速输入这些内容。

但是使用js的方法有一定缺陷性,它对常见  input标签类型的输入框无效,只对大多数富文本框生效。

非常简单的html界面

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>test</title>

</head>

<body bgcolor="burlywood">
    <div>
        <textarea id="kw1" cols="30" rows="10"></textarea>
        <hr>
        <textarea id="kw2" cols="30" rows="10"></textarea>
        <hr>
        <input id="kw3" value="">
    </div>

</body>

</html>

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("file:///E:/test.html")
search_str = "超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超"              "长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长"              "内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容"              "超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长"              "内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内"              "容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容"              "超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超"              "长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长"              "内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内"              "容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容"              "超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容超长内容"

# 使用innerHTML方式输入
js = f‘document.getElementById("kw1").innerHTML="{search_str}";‘
driver.execute_script(js)

# 使用send_keys方式输入
driver.find_element_by_id(‘kw2‘).send_keys(search_str)

# 在input框中使用innerHTML方式输入
js = f‘document.getElementById("kw3").innerHTML="{search_str}";‘
driver.execute_script(js)

原文地址:https://www.cnblogs.com/testlearn/p/12382747.html

时间: 2024-10-04 18:27:06

python使用selenium执行JS快速完成超长字符串的输入的相关文章

python之selenium调用js(execute_script)

转载: http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步执行javaScript 脚本:JavaScript的执行. *参数:适用任何JavaScript脚本. 使用: driver.execute_script('document.title') 使快播登陆用户名输入框标红显示: #coding=utf-8 from selenium import

在Python中用Selenium执行JavaScript

Selenium自己不带浏览器, 需要与第三方浏览器结合在一起使用.例如在Firefox上运行Selenium. PhantomJS是一个"无头"浏览器. 它会把网站加载到内存并执行页面上的JavaScript, 但是它不会向用户展示网页的图形界面. 把Selenium和PhantomJS结合在一起, 就可以运行一个非常强大的网络爬虫了, 可以处理cookie, JavaScript,header, 以及任何你需要做的事. Selenium可以从PyPI网站(https://pypi.

selenium执行js

import java.util.ArrayList; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.fi

python 用execjs执行js代码

js运行环境 Node.js是JS语言服务器端运行环境 安装和配置 : https://www.runoob.com/nodejs/nodejs-install-setup.html 使用方法: 准备js文件 var f = function(name) { return name + '你好' }; var name = 'zhangjian'; python操作js import execjs # 读取js文件 with open('js.js', encoding='utf8') as f

selenium之执行JS

selenium执行js语句主要靠execute_script()方法实现. 实例如下: from selenium import webdriver bro=webdriver.Chrome() bro.get("https://www.zhihu.com/explore") bro.execute_script("window.scrollTo(0,document.body.scrollHeight)") bro.execute_script("al

Python selenium中添加JS并执行JS语句

众所周知,Python通常结合selenium模块来完成一些web的自动化测试以及RPA(Robotic Process Automation)工作.事实上,Selenium还可以支持插入js语句.执行js语句.返回js语句的执行结果到python程序中.这对于那些已经习惯了Javascript语法的程序员们,简直是一大神器. 举个简单的例子,我们用selenium原生的方法对页面的一个input元素执行输入时,通常需要用到selenium中的send_keys以及clear方法, 代码类似于:

Python selenium的js扩展实现

python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制:对这种涉及页面脚本解析的内容,前面的方式便很无力. 这时我们需要能解析.运行js的引擎——浏览器,而python selenium能提供程序与浏览器的交互接口,再加上phantomjs这个可以后台运行的浏览器,即使用 selenium + phantomjs 便可以解决以上的问题. seleniu

python selenium --调用js

转自:http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步执行javaScript 脚本:JavaScript的执行. *参数:适用任何JavaScript脚本. 使用: driver.execute_script(‘document.title’) 使快播登陆用户名输入框标红显示: #coding=utf-8 from selenium import w

学习笔记:robotframework和python脚本执行js命令的小计

写python+selenium自动化脚本免不了要用到js,练习执行js命令,excute_script(js_command),但是在robotframework中使用相同方法执行报错,调整后执行通过,记录一下O(∩_∩)O~