您当前的位置: 首页 >  selenium

网易测试开发猿

暂无认证

  • 3浏览

    0关注

    221博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Selenium自动化(常用代码 / 元素定位)------详细

网易测试开发猿 发布时间:2021-11-25 16:20:20 ,浏览量:3

Selenium自动化 一、搭建环境

已写过,地址是:搭建Selenium自动化环境

二、常用代码
import time
from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome()
# 在浏览器打开被测项目地址
driver.get('http://www.baidu.com')
# 窗口最大化
driver.maximize_window()
# 窗口最小化
driver.minimize_window()
# 设置宽高
driver.set_window_size(600, 600)
# 回退
driver.back()
# 前进
driver.forward()
# 刷新
driver.refresh()
# 获得标题
print(driver.title)
# 获得当前路径
print(driver.current_url)
# 获得页面代码
print(driver.page_source)
# 截图
time.sleep(3)
driver.get_screenshot_as_file("F:\\11\\a.png")
# 关闭浏览器
driver.close()
三、元素定位

(在百度地址实验) 1、通过id定位元素

driver.find_element_by_id('kw').send_keys("勒布朗詹姆斯")

  2、Xpath元素定位 通过xpath绝对路径定位

driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys("勒布朗詹姆斯")

通过xpath相对路径定位

driver.find_element_by_xpath('//form/span/input').send_keys("勒布朗詹姆斯")

通过属性定位(* * * * 四颗星)

driver.find_element_by_xpath('//input[@autocomplete="off"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//input[@autocomplete="off" and @id="kw"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//input[@autocomplete="off" or @id="kw"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//*[@*="off"]').send_keys("勒布朗詹姆斯")

通过部分属性定位 (开头首)

driver.find_element_by_xpath("//a[starts-with(@name, 'ti_trhao']").click()   

(第5位开始到最大,包括第5位)

driver.find_element_by_xpath("//a[substring(@name,5)='rmap']").click()   

(第5位开始到最大,包括第5位)

driver.find_element_by_xpath("//a[contains(@name,'trvide')]").click()   

通过索引定位 (直接复制)

driver.find_element_by_xpath('//*[@id="kw"]').send_keys("勒布朗詹姆斯")  

通过文本定位

driver.find_element_by_xpath("//a[text()='地图']").click()
driver.find_element_by_xpath('//a[contains(text(),"hao")]').click()

  3、CSS元素定位 绝对路径

driver.find_element_by_css_selector('html body div div div div div form span input').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('html>body>div>div>div>div>div>form>span>input').send_keys("勒布朗詹姆斯")

css样式通过id(#)或者class(.)定位,并且可与标签名组合用

driver.find_element_by_css_selector("#kw").send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('.s_ipt').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('input.s_ipt').send_keys("勒布朗詹姆斯")

css通过属性定位(* * * * 四颗星)

driver.find_element_by_css_selector('input[autocomplete="off"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('input[autocomplete="off"][id="kw"]').send_keys("勒布朗詹姆斯")

css通过部分属性定位(* * * 三颗星),可以解决动态元素定位不到的场景 ( 开头)

driver.find_element_by_css_selector("input[autocomplete ^='of']").send_keys("勒布朗詹姆斯") 

(结尾)

driver.find_element_by_css_selector("input[autocomplete $='ff']").send_keys("勒布朗詹姆斯")

(匹配全部字)

driver.find_element_by_css_selector("input[autocomplete *='of']").send_keys("勒布朗詹姆斯")  

css通过子元素定位(类似于xpath中的索引方法) (首)

driver.find_element_by_css_selector("div#ul a: first-child").click()  

(尾)

driver.find_element_by_css_selector("div#ul a: last-child").click()  

(下标为2)

driver.find_element_by_css_selector("div#ul a: nth-child(2)").click()  

css通过查找兄弟元素

driver.find_element_by_css_selector("div#ul a+a+a").click()
a_list = driver.find_element_by_css_selector("div#ul a ~a")
for i in a_list:
     print(i, i.text)

总结:定位元素的方式有8种,写法有2种 driver.find_element_by_id() driver.find_element(By.ID, “”)               (By.NAME, “”)               (By.CLASS_NAME, “”)               (By.TAG_NAME, “”)               (By.LINK_TEXT, “”)               (By.PARTIAL_LINK_TEXT, “”)               (By.XPATH, “”)               (By.CSS_SELECTOR, “”)

关注
打赏
1665054478
查看更多评论
立即登录/注册

微信扫码登录

0.0455s