很多时候直接写脚本,find_element固定模式虽好,但有时候里面的元素变动并不可靠,尤其是前端的界面知识变化多端,日新月异。。。回到正题,又是有规定模式查找元素,没有js,jq来的快和实际,经常会碰到easyui之类的框架,就会明白。如下:
1.easy_ui textbox下的textarea没有id值,如果不想用xpath赋值,怎么处理?
eg:
<div>
<span i18n="">备注</span>
<input class="easyui-textbox textbox textbox-f" style="width: 528px; display: none;" data-
options="width:"540px",height:"60px",multiline:true,required:true,validType:"length[0,200]""
textboxname="remark">
<textarea class="textbox-text validatebox-text textbox-prompt validatebox-invalid" autocomplete="off" placeholder="" style="margin-left:
0px; margin-right: 0px; height: 49.7778px; width: 516.778px;" title=""></textarea>
</div>
破解1:js1 = "$('[textboxname=\"remark\"]').textbox('setValue', '123')"
driver.execute_script(js1)或
js2 = '$("#assignPackageDiv").find("[textboxname=\'remark\']").textbox("setValue","123")'
self.driver.execute_script(js2)
但:js3 = '$("textarea").val("123")'
driver.execute_script(js3) 也可赋值,但提交时会清空,等于白做
2.很多easyui消息框中,提交之后,确定之后再确定,第二个确定很难定位成功,涉及easyui提示框(alert)的关闭,常用的方法用两种:
<div class="messager-body panel-body panel-body-noborder window-body" title="" style="width: 298px;"><div class="messager-icon messager-
info"></div><div>数据保存成功</div><div style="clear:both;"></div><div class="messager-button"><a href="javascript.:void(0)" class="l-btn l-
btn-small" group="" id="" style="margin-left: 10px;"><span class="l-btn-left"><span class="l-btn-text">确定</span></span></a></div></div>
a.js = '$(".messager-body").window("close")'
browser.execute_script(js) 单独写可以使用
b.如果使用封装调用,也可以:
sure3 = 'xpath=>/html/body/div[80]/div[2]/div[4]/a[1]/span/span'
将其封装调用,也可以
def click_sure2(self):
try:
self.click(self.sure2)
except:
pass
引申:关闭对话框 $('#dlg').dialog('close')
3.确定按钮 messager-button 有确定和取消按钮(接着上面的问题)
<div class="messager-button"><a href="javascript.:void(0)" class="l-btn l-btn-small" group="" id="" style="margin-left: 10px;"><span
class="l-btn-left"><span class="l-btn-text">确定</span></span></a><a href="javascript.:void(0)" class="l-btn l-btn-small" group="" id=""
style="margin-left: 10px;"><span class="l-btn-left"><span class="l-btn-text">取消</span></span></a></div>
以前是这样写的:# sure2 = 'xpath=>/html/body/div[78]/div[2]/div[4]/a[1]/span/span' # 确定,但会有变化
def click_sure2(self):
try:
self.click(self.sure2)
except:
pass
后来是这样的:
js1= '$(".messager-button .l-btn-left:first").click()'
self.driver.execute_script(js1)
4..<a href='http:www.baidu.com'></a> 获取中间的连接www开头的,正则
(?<=http:)[^'>]+ (补充小知识)