|
前言今天我们来聊聊selenium—xpath定位方法,我们都知道selenium有八大定位策略分别是id、name、classname、tagname、linktext、partiallinktext、xpath、css。那么我们今天呢主要来讲讲八大定位策略中的xpath的定位方法,废话不多说我们直接开始吧。一、xpath基本定位用法 1.1使用id定位--driver.find_element_by_xpath('//input[@id="kw"]') 1.2使用class定位--driver.find_element_by_xpath('//input[@class="s_ipt"]') 1.3当然通过常用的8种方式结合xpath均可以定位(name、tag_name、link_text、partial_link_text)以上只列举了2种常用方式哦。二、xpath相对路径/绝对路径定位 2.1相对定位--以//开头如://form//input[@name="phone"] 2.2绝对定位--以/开头,但是要从根目录开始,比较繁琐,一般不建议使用如:/html/body/div/a 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛分享他们的经验,还会分享很多直播讲座和技术沙龙可以免费学习!划重点!开源的!!!qq群号:691998057【暗号:csdn999】三、xpath文本、模糊、逻辑定位 3.1【文本定位】使用text()元素的text内容如://button[text()="登录"] 3.2【模糊定位】使用contains()包含函数如://button[contains(text(),"登录")]、//button[contains(@class,"btn")]除了contains不是=等于多用于display属性 3.3【模糊定位】使用starts-with--匹配以xx开头的属性值;ends-with--匹配以xx结尾的属性值如://button[starts-with(@class,"btn")]、//input[ends-with(@class,"-special")] 3.4使用逻辑运算符--and、or;如://input[@name="phone"and@datatype="m"]四、xpath轴定位 4.1轴运算 ancestor:祖先节点包括父 parent:父节点 preceding-sibling:当前元素节点标签之前的所有兄弟节点 preceding:当前元素节点标签之前的所有节点 following-sibling:当前元素节点标签之后的所有兄弟节点 following:当前元素节点标签之后的所有节点 使用语法:轴名称::节点名称 使用较多场景:页面显示为一个表格样式的数据列 如:注意:#定位找到元素--做到唯一识别#优先使用id#舍弃:有下标的出现、有绝对定位的出现、id动态变化时舍弃fromseleniumimportwebdriverimporttimefromselenium.webdriver.support.waitimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.webdriver.common.byimportBydriver=webdriver.Chrome()driver.get("https://www.baidu.com/")driver.maximize_window()time.sleep(3)#定位百度搜索框driver.find_element_by_id("kw").send_keys("python")time.sleep(3)driver.find_element_by_id("su").click()time.sleep(5)#找到这个元素ele=driver.find_element_by_xpath('//a[text()="_百度百科"]')#拖动元素到可见区域--scrollIntoView()拉到顶部显示,有可能会被导航栏遮挡,定位不到而报错;scrollIntoView(false)可视区域底部对齐driver.execute_script("arguments[0].scrollIntoView(false);",ele)time.sleep(5)driver.quit()定位后的常见操作get(url)打开网页send_keys(str)输入click()点击clear()清空text获取标签文本内容get_attribute('属性')获取元素属性值close()关闭当前标签页quit()关闭浏览器,释放进程FAQ脚本结束如果没有调用quit()方法,chromedriver进程会在后台继续运行。大概占用4M空间。如果创建多了不关,会导致电脑卡。__import__('os').system("taskkill/f/t/imchromedriver.exe")好了今天的分享就到这里了,喜欢的可以点赞评论加关注,关注我每天给你们带来不同的惊喜。下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!最后:可以在公众号:程序员小濠!免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞”“评论”“收藏”一键三连哦!
|
|