1.js 模糊定位
driver.execute_script("""()=>{rs=document.querySelector("button[class*='close']");if(rs){rs.click()}}""")
button 标签,class 包含close
2.
click_credentials_js = """var links=document.querySelectorAll("form select > option"); if(links?.length>0){for(var i=0;i< links.length;i++){links[i].selected=true}};""" driver.execute_script(click_credentials_js)
默认点击下拉框的最后一个,links?.length>0,不存在下拉框不报错
3.停止页面加载
def stopLoading(): import win32api,win32con win32api.keybd_event(27, 0, 0, 0) win32api.keybd_event(27, 0, win32con.KEYEVENTF_KEYUP, 0)
4.
js0 = '''var items = ""; if(arguments[0]?.attributes.length){ for (index = 0; index < arguments[0]?.attributes.length; ++index) { items += arguments[0].attributes[index].value+" " };} return items;''' attrs = driver.execute_script(js0, in_put).lower()
获取标签的所有属性值
5.判断页面是否已加载完成 ‘complete’
result = driver.execute_script("return document.readyState")
6.js 中 value赋值时 文本有换行符
textareas为文本框对象,from_message为文本
driver.execute_script(r'arguments[0].value=%r;'%from_message, textareas)
6. document.querySelector 标签多条件或定位,以a标签的data-spm和href属性定位
finance = driver.find_element(By.XPATH, '//ul[@id="layout-new-menu-content"]/li[9]')
driver.execute_script( '''arguments[0].querySelector("ul.a-l-menu-sub-menu>a[data-spm='droot_normal_finance_sellerwalletcb'],[href='/apps/wallet/index']").click()''', finance)
6. 排除一些标签的属性div标签class包含t-dialog__ctx--fixed,但排除属性style="display: none;"
document.querySelector('div[class*="t-dialog__ctx--fixed"]:not([style="display: none;"]) div.t-dialog__header-content')