3.18-29种定位链接,隐藏框

在这9种常用的定位方法中,优先顺序
1)有id优先使用id定位
2)没有id,考虑使用name或者class定位。
3)如果没有id,name,class再考虑用xpath,css定位。
4)如果是链接可以考虑使用link_text,partial_link_text 定位。
5)tag_name和JavaScript还是用的比较少的。
我们根据实际情况,具体问题具体分析

from selenium import webdriver
    #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()
    #创建一个驱动谷歌浏览器的对象

# dx.implicitly_wait(1)
# dx.get("http://49.233.201.254:8080/cms/manage/login.do")
#     #通过get打开页面
# dx.maximize_window() #窗口最大化
# dx.find_element_by_id("userAccount").send_keys("admin")
#     #找到id属性,输入账号
#
# #强制等待,直到指定页面出现再下一步,否则报错
# time.sleep(1)#2秒后打开另一窗口
# dx.get("https://www.baidu.com")#窗口覆盖
# time.sleep(2)
# w="window.open('http://www.baidu.com')"#另开窗口
# time.sleep(1)
# dx.refresh()
# dx.implicitly_wait(1) #隐式等待
#     #WebDriverWait显式等待
# dx.execute_script(w)
# time.sleep(1)
# dx.back() #切换到上一页
# time.sleep(1)
# dx.forward() #切换到下一页
#
# dx.set_window_size(500,500)#设置窗口规格
#
# #######dx.get_screenshot_as_file('D:/桌面')#保存到某路径
# #dx.close()#关闭当前窗口(默认第一个页面)
# dx.quit()#关闭所有窗口

#name
# from  selenium  import   webdriver #导入selenium模块中的webdriver
# import  time
# dx.get("https://www.baidu.com") #通过get打开页面
# time.sleep(2)
# dx.maximize_window()
# dx.find_element_by_name("wd").send_keys("name定位")

#tag_name
# from  selenium  import   webdriver #导入selenium模块中的webdriver
# import  time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("https://www.baidu.com") #通过get打开页面
# time.sleep(2)
# dx.maximize_window()
# inputs=dx.find_elements_by_tag_name("input") #找到标签input
# for i  in  inputs:
#     if   i.get_attribute("name")=="wd":
#         i.send_keys("tag_name定位方法")

#js定位
# from  selenium  import   webdriver #导入selenium模块中的webdriver
# import  time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("https://www.baidu.com") #通过get打开页面
# time.sleep(2)
# dx.maximize_window()
# js='document.getElementById("kw").value="js定位"'
# dx.execute_script(js)

#id
dx.get("https://www.baidu.com")#通过get打开页面
# dx.find_element_by_id("kw").send_keys("id定位")
# dx.find_element_by_name("wd").send_keys("name定位")
# dx.find_element_by_class_name("s_ipt").send_keys("class")
# dx.find_element_by_link_text("hao123").click()#点击
# dx.find_element_by_partial_link_text("hao").click()
# dx.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath定位")
# dx.find_element_by_css_selector("#kw").send_keys("css")

# js='document.getElementById("kw").value="js定位"'
# dx.execute_script(js)
#
# inputs=dx.find_elements_by_tag_name("input")
# for i in inputs:
#     if i.get_attribute("name")=="wd":
#         i.send_keys("tag_name")

在这9种常用的定位方法中,优先顺序
1)有id优先使用id定位
2)没有id,考虑使用name或者class定位。
3)如果没有id,name,class再考虑用xpath,css定位。
4)如果是链接可以考虑使用link_text,partial_link_text 定位。
5)tag_name和JavaScript还是用的比较少的。
我们根据实际情况,具体问题具体分析

一.xpath 定位。格式:dx.find_element_by_xpath(xpath表达式)

两个定位:1、绝对定位:特点:1.以单斜杠/开头;2.从页面根元素(HTML标签)开始,严格按照元素在HTML页面中的位置和顺序向下查找

右键copy  full  path复制

如:/html/body/div[2]/div[1]/div[5]/div/div/form/span[1]/input

2、相对定位:(我们一般都是用相对定位来定位的)特点:1.以双斜杠//开头;2.不考虑元素在页面当中的绝对路径和位置;3.只考虑是否存在符合表达式的元素即可。

2.1使用标签名+节点属性定位

//*[@id="kw"]

语法://标签名[@属性名=属性值]

#xpath定位
# from selenium import webdriver#导入selenium模块中的webdriver
# import time
# dx.get("https://www.baidu.com")#通过get打开页面
# time.sleep(2)
# dx.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys("path中层级定位")
# time.sleep(2)
# dx.get("https://www.baidu.com")
# dx.find_element_by_xpath('//input[@id="kw"]').send_keys("xpath中的标签定位")
# time.sleep(2)
# dx.get("https://www.baidu.com")
# dx.find_element_by_xpath('//*[@autocomplete="off" and @name="wd" ]').send_keys("xpath中组合属性and定位")
# time.sleep(2)
# dx.get("https://www.baidu.com")
# dx.find_element_by_xpath('//*[@autocomplete="off"]').send_keys("xpath中的其他属性定位")
# time.sleep(2)
# dx.get("https://www.baidu.com")
# dx.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("xpath中的class定位")
# time.sleep(2)
# dx.get("https://www.baidu.com")
# dx.find_element_by_xpath('//*[@name="wd"]').send_keys("xpath中的name定位")
# time.sleep(2)
# dx.get("https://www.baidu.com")
# dx.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath中的id定位")
#css定位
dx.get("https://www.baidu.com")#通过get打开页面
time.sleep(2)
dx.find_element_by_css_selector("#form>span>input").send_keys("css中层级爷爷级方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector("#form > span.bg.s_ipt_wr.new-pmd.quickdelete-wrap>input")\
    .send_keys("css中层级父级方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector("[autocomplete='off'][class='s_ipt']").send_keys("css中组合属性方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector("[autocomplete='off']").send_keys("css中其他属性方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector(".s_ipt").send_keys("css中class简写方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector("[class='s_ipt']").send_keys("css中class全称方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector("[name='wd']").send_keys("css中name全称方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector("[id='kw']").send_keys("css中id全称方法")
time.sleep(2)
dx.get("https://www.baidu.com")
dx.find_element_by_css_selector("#kw").send_keys("css中id简写方法")
time.sleep(20)
dx.close()

链接、隐藏框

#账号、密码、登录
# from time import *
# dx.get("http://49.233.201.254:8080/cms/manage/login.do")#通过get打开页面
# sleep(2)
# dx.find_element_by_id("userAccount").send_keys("admin")
# sleep(2)
# dx.find_element_by_id("loginPwd").send_keys("123456")
# sleep(2)
# dx.find_element_by_id("loginBtn").click()

#链接
# dx.get("https://www.baidu.com")#通过get打开页面
# time.sleep(2)
# dx.find_element_by_link_text("网盘").click()

from selenium.webdriver.common.action_chains import ActionChains

#隐藏框
#例1
# dx.get("https://www.baidu.com")#通过get打开页面
# time.sleep(2)
# wz=dx.find_element_by_link_text("更多")
# ActionChains(dx).move_to_element(wz).perform()
# time.sleep(2)
# dx.find_element_by_link_text("健康").click()
#例2
# dx.get("https://www.baidu.com")#通过get打开页面
# time.sleep(2)
# dx.maximize_window()
# time.sleep(2)
# wz=dx.find_element_by_id("s-usersetting-top")
# ActionChains(dx).move_to_element(wz).perform()
# time.sleep(2)
# dx.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[3]/span').click()

# dx.get("https://www.baidu.com")#通过get打开页面
# time.sleep(2)
# dx.maximize_window()
# time.sleep(2)
# dx.find_element_by_id("s-usersetting-top").click()
# time.sleep(2)
# dx.find_element_by_link_text("高级搜索").click()

ActionChains类(鼠标操作)

常用于模拟鼠标的行为,比如单击、双击、拖拽等行为

       click(on_element=None)     --- 鼠标单击

       double_click(on_element=None)    ---  双击      

       context_click(on_element=None)   ---  右击      

       click_and_hold(on_element=None)   ---  鼠标单击并且按住不放

       drag_and_drop(source,target)   ---  拖拽

       drag_and_drop_by_offset(source,xoffset,yoffset)   ---  将目标拖动到指定的位置

       key_down(value,element=None)  ---  按下某个键盘上的键

       key_up(value,element=None)   ---  松开某个键

       move_by_offset(xoffset,yoffset)   ---  鼠标从当前位置移动到某个坐标

       move_to_element(to_element)   ---  鼠标移动到某个元素

       move_to_element_with_offset(to_element,xoffset,yoffset)  

---  移动到距某个元素(左上角坐标)多少距离的位置

       perform()    ---  执行链中的所有动作

       release(on_element=None)   ---  在某个元素位置松开鼠标左

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值