#coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
#给搜索输入框标红javascript脚本
js="var q=document.getElementById(\"kw\");q.style.border=\"2px solid red\";"
#调用给搜索输入框标红js脚本
driver.execute_script(js)
time.sleep(3)
#单独执行js脚本
driver.execute_script('alert("输入框标红了!")')
time.sleep(3)
#接受提示信息
driver.switch_to_alert().accept()
time.sleep(3)
#js隐藏元素,将获取的图片元素隐藏
img1 = driver.find_element_by_xpath("//*[@id='lg']/img")
driver.execute_script('$(arguments[0]).fadeOut()',img1)
time.sleep(3)
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
driver.find_element_by_xpath("//*[@id='su']").click()
time.sleep(3)
driver.quit()

原文地址:https://blog.csdn.net/u013372487/article/details/46502853

js中设置元素class的三种方法小结

<!DOCTYPE HTML>
<HTML>
<HEAD>
<meta charset="utf-8" />
<title>el.className = 'abc'</title>
<style type="text/css">
.abc {
background: red;
}
</style>
</HEAD>
<BODY>
<div id="d1">test div</div>
<script>
var div = document.getElementById('d1');
div.className = 'abc';
</script>
</BODY>
</HTML>
js="var div = document.getElementById(\"kw\");div.className = \"abc\";"
driver[0].execute_script(js)
先定位到ID 然后修改这个ID的class属性
//JavaScript属性选择器 选中后用来更改属性值
var a=document.querySelector("div[data-hover-cls=inputs-hover]");
//更改属性值class为“”
a.setAttribute("class","")
//注意此方法只适用于ID CLASS TAG之外的子属性的选择
js = "var a=document.querySelector(\"div[data-hover-cls=inputs-hover]\");a.setAttribute(\"class\",\"inputs J_LaterHover inputs-hover\")"
self.driver.execute_script(js) jiage_mini = "var a=document.querySelector(\"input[aria-label=价格最小值]\");a.setAttribute(\"value\",\"50\")"
self.driver.execute_script(jiage_mini)
jiage_max = "var a=document.querySelector(\"input[aria-label=价格最大值]\");a.setAttribute(\"value\",\"50\")"
self.driver.execute_script(jiage_max) submit="var a=document.querySelector(\"button[type=button]\"),a.click()"
self.driver.execute_script(submit)

小例子

TB翻页

var button=document.querySelector("a[trace=srp_select_pagedown]")

XP查看更多

var button=document.querySelector("div[class=item-collection-detail__products-more]")
button.click()


虾皮

单次点击【查看更多】
var button=document.querySelector("div[class=item-collection-detail__products-more]")
button.click()

循环点击【查看更多】
for (var i=1; i<10; i++)
{

//延时1秒执行 https://www.oschina.net/question/141209_21625?sort=time
var beginTime=new Date().getTime();
while(new Date().getTime() < beginTime + 2000) {

}
//要执行的代码
var button=document.querySelector("div[class=item-collection-detail__products-more]");
button.click();
}

循环点击新增

//class选择器【分类添加商品】
var a=document.getElementsByClassName("item-collection-detail__products-item__action")
for (var i=1; i<10; i++)
{ a[i].click();
//延时器
var beginTime=new Date().getTime();
while(new Date().getTime() < beginTime + 200) {
}
}
//i=商品数量 beginTime=间隔时间

精华 selenium_webdriver(python)调用js脚本的更多相关文章

  1. 最全总结!聊聊 Python 调用 JS 的几种方式

    1. 前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我给大 ...

  2. Python 调用 Shell脚本的方法

    Python 调用 Shell脚本的方法 1.os模块的popen方法 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出. > ...

  3. iOS:在OC中调用JS脚本

    示例一:在webView中调用js脚本进行搜索 1.首先导入JavaScriptCore.framework这个框架 2.创建webView.设置代理.请求手机端百度 #import "Vi ...

  4. Python 调用JS文件中的函数

    Python 调用JS文件中的函数 1.安装PyExecJS第三方库 2.导入库:import execjs 3.调用JS文件中的方法 Passwd = execjs.compile(open(r&q ...

  5. python 调用js代码

    Python2   安装pyv8 pip install-egit://github.com/brokenseal/PyV8-OS-X#egg=pyv8 from pyv8 import PyV8 c ...

  6. java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

  7. python调用shell脚本时需要切换目录

    最近遇到了一个问题,就是python代码调用shell脚本时,发现输入输出的文件,总是和自己预想的有偏差,但是单独在linux下执行命令的时候,却没有错误.后来发现是相对路径的问题,因为执行pytho ...

  8. java调用js脚本

    有些情况下,需要java去调用js,groovy等脚本语言,传入参数获取脚本运行的结果. js脚本例子: function add(a,b){ return a + b + number; } jav ...

  9. python调用其他脚本

    1.用python调用python脚本 #!/usr/local/bin/python3. import time import os count = str = ('python b.py') re ...

随机推荐

  1. Difference between ID and control.ClientID OR why use control.ClientID if I can access control through ID

     https://stackoverflow.com/questions/3743582/difference-between-id-and-control-clientid-or-why-use-c ...

  2. WSL及Linux入门

    win10内置linux子系统(Windows Subsystem for Linux),可以不用安装Vmware等虚拟机学习linux啦. wsl开启方式 设置打开开发人员模式. 控制面板-程序和功 ...

  3. P3521 [POI2011]ROT-Tree Rotations

    思路 发现每个子树内的交换情况不会对子树外造成影响,所以可以利用贪心的思想,线段树合并找出当前子树的合并的最小值直接累加给答案即可 我脑补的线段树合并貌似不太优秀的样子...每次都要新建节点,学习了直 ...

  4. P4450 双亲数

    思路 同zap-queries 莫比乌斯反演的板子 数据范围小到不用整除分块... 代码 #include <cstdio> #include <algorithm> #inc ...

  5. 【C#】非常重要的泛型

    泛型 为什么要有泛型, 在没有泛型之前, 什么东西充当了泛型的作用? 在泛型出现之前, 代码中会有很多需要强制转换的地方. 比如 int a = (int) object, 对于这样类似的代码, 编译 ...

  6. js捕获错误

    文: http://www.jb51.net/article/78764.htm 用window.onerror捕获并上报Js错误的方法 前两天有个2048游戏的用户反馈说,打开游戏后不能玩儿,只有一 ...

  7. 【三十五】thinkphp之视图

    1.模板定义 视图属于mvc中的v.一般是html结合php获取的数据提供给用户使用. 每个模板的文件都是独立的(文件名与控制器名称必须一样) 默认的模板文件规则是视图目录/[模板主题]控制器/操作名 ...

  8. CentOS6.5下搭建SVN服务器

    1.检查是否已安装 rpm -qa | grep subversion 如果要卸载旧版本: yum remove subversion 2.安装 yum install subversion PS:y ...

  9. 设计模式(二)策略模式(Strategy)

    1.分析项目中变化部分与不变部分 2.多用组合,少用继承:用行为类组合,而不是行为的继承 案例: 第一步,把行为抽象为接口 package top.littlepage.designPattern.S ...

  10. Qt5.QString传参数

    1.函数传参,如果是 QString&类型 的话,不能直接 传入 char* 类型的参数,若是声明成 const QString&类型 的话,就可以 解释:应该是 函数调用的时候 编译 ...