您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页Python Selenium 定位详解

Python Selenium 定位详解

来源:五一七教育网


一、id定位

find_element_by_id()

采用id属性进行定位。例如在百度页面中输入关键字 Selenium 进行搜索。百度部分关键html源码如下:

百度输入框和百度一下的按钮都有id,那么定位代码如下:

#coding=utf-8 from selenium import webdriver import time driver = webdriver.Chrome() #等待 driver.implicitly_wait(10) driver.get(\"http://www.baidu.com\") driver.find_element_by_id(\"kw\").send_keys(\"Selenium\") driver.find_element_by_id(\"su\").click() #等待两秒钟 time.sleep(2) #退出浏览器 driver.quit()

二、name定位

find_element_by_name() driver.find_element_by_name(\"wd\")

三、class_name定位

find_element_byclassname() driver.find_element_by_class_name(\"s_ipt\")

四、xpath定位

find_element_by_xpath()

xpath是XML路径语言,它可以用来确定xml文档中的元素位置,通过元素的路径来完成对元素的查找。HTML就是XML的一种实现方式,所以xpath是一种非常强大的定位方式。

获取xpath、css_selector路径方法

打开谷歌浏览器-->打开百度-->键盘点击F12--点击定位位置-->点击源码位置-->右件copy

绝对路径

如百度搜索框的绝对路径xpath定位:

driver.find_element_by_xpath(\"/html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input\")

相对路径(属性标签等)

搜索框还可以利用id和name属性去定位:

driver.find_element_by_xpath(\"//input[@id='kw']\") driver.find_element_by_xpath(\"//*[@name='wd']\")

标签名input也可以定位,只要在该标签内,任意属性都可以,比如搜索框的maxlength属性:

driver.find_element_by_xpath(\"//input[@maxlength='255']\") driver.find_element_by_xpath(\"//form[@id='form']/span/input\")

注:如果元素的单个属性无法确定其唯一性,可以用and连接多个属性去确定

五、css_selector定位

find_element_by_cssselector()

CSS属性定位可以比较灵活地选择控件的任意属性,定位方式也会比xpath快

driver.find_element_by_css_selector(\"#kw\") driver.find_element_by_css_selector(\".s_ipt\")

注:class是用.标记,id是用#标记

driver.find_element_by_css_selector(\"input[autocomplete='off']\").send_keys(\"selenum\") driver.find_element_by_css_selector(\"span.bg.s_btn_wr>input#su\").click()

说明 1.\"input[autocomplete='off']\",autocomplete='off' 为input内属性值; 2.\"span.bg.s_btn_wr>input#su\",先定位到一个class名为bg >s_btn_wr的span标签,在这个标签下面有一个id为su的input标签 注:在css里面下级标签元素用>连接,如果class里面有空格,空格用.进行连接

六、tag_name定位

find_element_by_tag_name ()

html标签,如input、a、form等

一般定位如下:find_element_by_tag_name(\"input\"),因为一个html一个标签存在多个因此这种定位方式用的比较少

七、link_text 定位

find_element_by_partial_link_text()

定位标签

html源码: 新闻 #全部匹配 driver.find_element_by_link_text(\"新闻\").click() #部分匹配 driver.find_element_by_partial_link_text(\"闻\").click()

八、Xpath&Css定位方法速查表

九、By定位

#By定位必备导入 from selenium.webdriver.common.by import By find_element(By.ID,\"kw\") find_element(By.NAME,\"wd\") find_element(By.CLASS_NAME,\"s_ipt\") find_element(By.TAG_NAME,\"input\") find_element(By.LINK_TEXT,u\"新闻\") find_element(By.PARTIAL_LINK_TEXT,u\"新\") find_element(By.XPATH,\"//*[@class='bg s_btn']\") find_element(By.CSS_SELECTOR,\"span.bg s_btn_wr>input#su\")

十、elements复数定位

说明:复数定位方式每次取到的都是具有相同类型属性的一组元素,所以返回的是一个list值

如上图需要定位到时视频,再点击视频链接

#注意下标是从0开始,所以视频下标为3 driver.find_elements_by_class_name(\"mnav\")[3].click() #也可以借助pop()函数,一般pop()或pop(-1)表示获取元素种的最后一个,pop(3)表示第4个 driver.find_elements(\"css selector\",\".mnav\").pop(3).click()

十一、JS的定位

#以下Element 返回单值,Elements复数返回列表值

id定位:document.getElementById() name定位:document.getElementsByName() tag定位:document.getElementsByTagName() class定位:document.getElementsByClassName() css定位:document.querySelectorAll()

源码举例

search_js = \"document.getElementsByName('wd')[0].value='selenium';\" search_js2 = \"document.querySelectorAll('.s_ipt')[0].value='selenium';\" button_js = \"document.getElementById('su').click();\" button_js2 = \"document.getElementsByClassName('s_btn')[0].click()\" driver.execute_script(search_js2) driver.execute_script(button_js2)

以上为常用的四种js定位方式都需要执行的就execute_script())

jQuery语法是为HTML元素的选取编制的,可以对元素执行一些具体的操作 基础语法是$(selector).action() $符号定义jQuery,selector选择器用来查询具体的HTML元素,通过action()来执行对元素的具体操作。 其中我们经常用到的action()在jq中有这么几种: $(selector).val('input_value') 其中input_value表示要输入的文本的值 $(selector).val('') 如果为空,则执行后是清空的操作 $(selector).click() 点击

源码举例

search_jq = \"$('#kw').val('selenium')\" button_jq = \"$('.s_btn').click()\" driver.execute_script(search_jq) driver.execute_script(button_jq)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务