自动化测试-js使用技巧
panxueyan 2/1/2021 自动化测试
自动话过程中配合js会事半功倍
滚动到顶部
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('document.documentElement.scrollTop=0')
1
2
3
2
3
滚动到底部
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('document.documentElement.scrollTop=10000')
1
2
3
2
3
下拉滚动条
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('html,body').scrollTop(800)")
1
2
3
2
3
下拉滚动条
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('html,body').scrollTop(1200)")
1
2
3
2
3
点击编辑按钮
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#assign_edit').click()")
1
2
3
2
3
鼠标移动到我的工作
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#2539').mouseover()")
1
2
3
2
3
鼠标移出我的工作
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#2539').mouseout()")
1
2
3
2
3
删除日历控件只读属性
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('.mini-buttonedit-input').removeAttr('readonly');")
1
2
3
2
3
删除日期输入框只读属性
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("document.getElementById('showbegin_time0').removeAttribute('readonly');")
1
2
3
2
3
点发货下拉菜单
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#parent_bar_div_10300')[0].click()")
1
2
3
2
3
点击未发货送货单
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#menu_children_a_10301')[0].click()")
1
2
3
2
3
点击发货
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('.query_result_receive').click()")
1
2
3
2
3
js点击合同起草
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#1022').mouseover();$('#1022').mouseout();$('#1022').mouseover();")
1
2
3
2
3
更改display属性
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#1021').mouseover();$('#1021').mouseout();$('#1021').mouseover();")
1
2
3
2
3
鼠标移动到立项管理
https://www.w3school.com.cn/jquery/selector_eq.asp 选择第二个
元素: $("p:eq(1)")
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('.layui-nav>li:eq(3)').mouseover();")
1
2
3
2
3
鼠标移动到我要采购
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('.jd-user-menu>ul>li:eq(4)').mouseover()")
1
2
3
2
3
鼠标移出我要采购
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('$(".jd-user-menu>ul>li:eq(4)").mouseout()')
1
2
3
2
3
1.切换到默认框架
2.切换到新窗口 合同审签单
3.js切换窗口 window.focus();
1.切换到新窗口 铁塔在线商务平台
2.窗口最大化 driver.manage().window().maximize();
3.选择工程物料 driver.findElementById('purchase_type').findElementsByTagName("option")[1].click()
1
2
3
4
5
6
7
2
3
4
5
6
7
鼠标移动到订单审批
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('[class='jd-user-menu']>ul>li:eq(7)').mouseover()")
1
2
3
2
3
鼠标移出订单审批
from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('[class='jd-user-menu']>ul>li:eq(7)').mouseout()")
1
2
3
2
3
以下技巧当作代码备份
点击提交
$('.bottom-div>input:eq(2)').click()
点击提交
$('.bottom-div>input:eq(2)').click()
点击电商化批量采购 $('[href="http://120.52.96.35:8280/eshop/commonOrder/purchaseApplyList.do?shopCode=jtjcsd"]')[0].click()
点击订单接收
$('[menuseq=".1105.1106."]')[0].click()
点击电商化采购
$('#mess>div>a')[0].click()
点击电商化运营物资
$('#ContDS>ul>li>a')[0].click()
点击查询按钮
$('[value="查询"]').click()
点击接收
$('.query_result_receive').click()
点击发货(下拉菜单)
$('#parent_bar_div_10300').click()
点击未发货送货单
$('#menu_children_a_10301')[0].click()
点击勾选框
$('[name="ctwh_in_checkbox"]').click()
鼠标移动到订单审批
$('[class="jd-user-menu"]>ul>li:eq(7)').mouseover()
鼠标移出订单审批
$('[class="jd-user-menu"]>ul>li:eq(7)').mouseout()
点击提交
$('.bottom-div>input:eq(2)').click()
鼠标移动到订单管理
$('[menucode="orderMgr"]').mouseover()
清除输入框
document.evaluate("/html/body/div[1]/table/tbody/tr/td[2]/div[2]/div[2]/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div/table/tbody/tr[3]/td[4]/span/span/input", document, null, XPathResult.ANY_TYPE, null).iterateNext().value="";
action.moveToElement(driver.findElementById("cmsEmployeeCode")).click(driver.findElementById("cmsEmployeeCode")).perform();
js点击下一步办理人 iframes = document.getElementsByTagName('iframe')[1]; currentDoc = iframes.contentDocument; var s =currentDoc.getElementsByTagName('span'); for(var i=0,j=s.length; i<j;i++){ if(s[i].innerHTML === '丛林(conglin3)') s[i].click(); };
js点击下一步办理人 iframes = document.getElementsByTagName('iframe')[3]; currentDoc = iframes.contentDocument; currentDoc = iframes.contentDocument; currentDoc.getElementById('manualActivity5').click();
js点击下一步办理人 iframes = document.getElementsByTagName('iframe')[1]; currentDoc = iframes.contentDocument; var s =currentDoc.getElementsByTagName('span'); for(var i=0,j=s.length; i<j;i++){ if(s[i].innerHTML === '沈常俊(shencj)') s[i].click(); };
http://120.52.96.35:16180/portal/login/getLoginPage lt_liqi / 1
执行js点击运营管理 open_win("/weavernorth/PortalJumpCenter.jsp?flag=yyzcxt");
$('html,body').animate({scrollTop: 0}, 500);//500滑动的时间,单位:毫秒;0,到某端的距离
执行js点击登录 checkAccount();
<a href="javascript:void(0);" onclick="getUrl('/batchManageAction/toBatchManagePage');">
需求批次录入(联通)</a>
js点击需求批次录入
getUrl('/batchManageAction/toBatchManagePage');
<img src="/portal/common/images/log-an1.png" width="266px" height="34px" onclick="doSubmmit();" alt="">
执行js点击登录
doSubmmit();
自定义参数-js返回值 var id=document.evaluate('//*[@id="e-content"]/div[2]/div/div/div[3]/div/div[2]/div/div[2]/div/form/div[2]/div/div[1]/div/input', document, null, XPathResult.ANY_TYPE, null).iterateNext().value;return id;
js点击下一步办理人 $('.jiantou').click();
1.切换到新窗口 新建合同
2.js下拉滚动条 $('html,body').scrollTop(500);
3.单击 '下拉框-合同类型下拉框[ID]'
4.js点击合同类型下拉框 var a= document.getElementById('selectContractType').getElementsByTagName('span')[0].getElementsByTagName('span')[0].getElementsByTagName('span')[1].click();
js下拉滚动条 var d = $("html,body"); d.animate({scrollTop:1000}, 1000);
js下拉滚动条 var d = $("html,body"); d.animate({scrollLeft:1000}, 1000);
js下拉滚动条 var d = $("html,body"); d.animate({scrollTop:d.height()}, 1000);
js下拉滚动条 var d = $("html,body"); d.animate({scrollTop:d.height()}, 1000);
=============== 执行JS ==================END
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
JS 技巧
$('[href="http://120.52.96.35:8280/eshop/commonOrder/purchaseApplyList.do?shopCode=jtjcsd"]')[0].click()
$(".jd-user-menu>ul>li:eq(4)").mouseover()
$('[value="站址间转移"]').click()
$('[value="查询"]').click()
$('#menu_children_a_10301')[0].click()
关闭当前页面 driver.close();
窗口最大化 driver.manage().window().maximize();
driver.findElementById('purchase_type').findElementsByTagName("option")[1].click()
执行 cmd 命令
C:\Users\Administrator\Desktop\AutoIT\caigou_shenpi.exe
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
先获取select中option有多少个~即长度,再获取option对象,然后循环遍历,获取option中的值即可,这是我想出来的第二种方案,第一个问题还是没找到解决办法
<select id="out_region_manager" class="noBorderDynInput wid-100">
<option selected="" value="21203467">李宁</option>
<option selected="" value="21203483">郑荣虎</option>
<option selected="" value="21203464">郭涛</option>
<option selected="" value="21205727">殷艳</option>
<option selected="" value="21203475">王栋</option>
<option selected="" value="71213929">张珂</option>
<option selected="" value="21203472">卢文德</option>
<option selected="" value="71327299">公磊</option>
<option selected="" value="21203463">傅饶</option>
<option selected="" value="21203480">颜晗</option>
<option selected="" value="21203479">徐婷婷</option>
<option selected="" value="21203481">颜伟</option>
</select>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
着中会把select下的所有opotion的text值全部取出来
var next_zhixingren=document.getElementById("out_region_manager").textContent;return next_zhixingren;
var purityTypeL = document.getElementById('purityType0').options.length;
var purityTypeO = document.getElementById('purityType0').options;
for(i=1;i<Number(purityTypeL);i++){
var aaa = purityTypeO[i].value;
var bbb = purityTypeO[i].text;
}
var next_zhixingren=document.getElementById("out_region_manager").options[11].textContent;return next_zhixingren;
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
JS 动态拼接URL并打开
var order_id=document.getElementById("orderId").value;
var orderId_url="http://120.52.96.35:7016/resweb/asset/asset.spr?method=forwardAddAssetsInfo&assetFlowId=901002&staffId=21203463&assetCardType=null&baofyy=&orderId="+order_id;
window.open(orderId_url);
1
2
3
2
3
js选择采购类型
iframes = document.getElementsByTagName('iframe')[2]; currentDoc = iframes.contentDocument; currentDoc.getElementById("mini-15$1").click();
1
2
2
长按删除-服务器
action.longPress(337,547,5000).release().perform();
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class JS20161212 {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver","C:\\Training\\Automation\\Software\\drivers\\chromedriver_win32\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://www.hao123.com/");
driver.manage().window().maximize();
Thread.sleep(2000);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("scrollTo(0,10000)");----------------------------------------------向下拉到底
Thread.sleep(2000);
js.executeScript("scrollBy(0, 0-document.body.scrollHeight *99/100)");--------------向上拉到顶
Thread.sleep(2000);
js.executeScript("scrollTo(0,100000)");---------------------------------------------向下拉到底
Thread.sleep(2000);
js.executeScript("scrollTo(0,1)");--------------------------------------------------向上拉到顶
Thread.sleep(2000);
js.executeScript("scrollTo(0,1000)");
Thread.sleep(2000);
js.executeScript("scrollBy(0, 0-document.body.scrollHeight *1/2)");-----------------拉到中间
Thread.sleep(2000);
js.executeScript("scrollBy(0, 0-document.body.scrollWidht *1/2)");------------------左右拉到中间
精简后的代码
// ((JavascriptExecutor)driver).executeScript("scrollTo(0,10000)");----------------向下拉到底
// Thread.sleep(2000);
// ((JavascriptExecutor)driver).executeScript("scrollTo(0,1)");--------------------向上拉到顶
// Thread.sleep(2000);
// ((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=10000"); 将页面滚动条拖到底部
// Thread.sleep(2000);
// ((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=0"); 将页面滚动条拖到顶部
// Thread.sleep(2000);
//
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52