做下笔记就是想记录一下最近用的定位方法,首先是前端开发的小伙伴,id 几乎没有,那就只能自己想办法减少工作量了
1、首先是contains,这个对于文本有点太好用
get_element(driver, ('xpath', "//button[contains(text(),'停止描点')]")).click()
2、还是通过标签进行@xxx
get_element(driver, ('xpath', "//button[@class='btn btn-danger']")).click()
3、就是 id 、class_name等等的一些列不常用的,就不说啦
如何 通过 平级 元素定位呢 preceding-sibling 等 还是自己实践夏关键字如下图
get_elements(self.driver, ('xpath', "//a[@title='查看']/preceding-sibling::span[contains(@id,'check')]"))[i].click()
关键在上面
示例:
//div[contains(text(),'产证地址')]/parent::td
//td[@width='16%']//child::div
//div[contains(text(),'产证地址')]//ancestor::table
//td[@width='50%']/descendant::p
//td[@width='50%']/following::div[contains(text(),'行政区域')]
//p[text()='物业信息']/following-sibling::p[@id='ownerPart'] 通过前面 定位后面
//p[text()='出售方信息']/preceding-sibling::p[contains(text(),'物业信息')] 通过后面,定位前
//p[text()='出售方信息']/preceding::div[contains(text(),'拟定网签价')]
光标移动至元素位置
self.driver.execute_script("arguments[0].scrollIntoView();", get_elements(self.driver, ('xpath', "//a[@title='查看']/preceding-sibling::span[contains(@id,'check')]"))
光标置顶
driver.execute_script("window.scrollTo(0,0)")
升级了firefox 到63 使用input标签 send_keys(path)不行了,大约了解下是因为安全权限的问题,目前的解决方案是把标签改为可显
这么玩就行了
readonly 解决方案
var rs = document.querySelectorAll("input[readonly='readonly']"); for(var i = 0; i < rs.length; i++){ rs[i].readOnly = false; }