自动化测试-js使用技巧

2/1/2021 自动化测试

自动话过程中配合js会事半功倍

滚动到顶部

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('document.documentElement.scrollTop=0')
1
2
3

滚动到底部

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('document.documentElement.scrollTop=10000')
1
2
3

下拉滚动条

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('html,body').scrollTop(800)")
1
2
3

下拉滚动条

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('html,body').scrollTop(1200)")
1
2
3

点击编辑按钮

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#assign_edit').click()")
1
2
3

鼠标移动到我的工作

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#2539').mouseover()")
1
2
3

鼠标移出我的工作

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#2539').mouseout()")
1
2
3

删除日历控件只读属性

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('.mini-buttonedit-input').removeAttr('readonly');")
1
2
3

删除日期输入框只读属性

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("document.getElementById('showbegin_time0').removeAttribute('readonly');")
1
2
3

点发货下拉菜单

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#parent_bar_div_10300')[0].click()")
1
2
3

点击未发货送货单

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#menu_children_a_10301')[0].click()")
1
2
3

点击发货

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('.query_result_receive').click()")
1
2
3

js点击合同起草

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#1022').mouseover();$('#1022').mouseout();$('#1022').mouseover();")
1
2
3

更改display属性

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('#1021').mouseover();$('#1021').mouseout();$('#1021').mouseover();")
1
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

鼠标移动到我要采购

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('.jd-user-menu>ul>li:eq(4)').mouseover()")
1
2
3

鼠标移出我要采购

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script('$(".jd-user-menu>ul>li:eq(4)").mouseout()')
1
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

鼠标移动到订单审批

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('[class='jd-user-menu']>ul>li:eq(7)').mouseover()")
1
2
3

鼠标移出订单审批

from selenium import webdriver
driver = webdriver.Chrome()
driver.execute_script("$('[class='jd-user-menu']>ul>li:eq(7)').mouseout()")
1
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

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

先获取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

着中会把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

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

js选择采购类型

iframes = document.getElementsByTagName('iframe')[2];  currentDoc = iframes.contentDocument;  currentDoc.getElementById("mini-15$1").click();

1
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
Last Updated: 2/3/2021, 10:05:36 AM