【seleinum】学习selenium的基础教程讲解之元素定位、浏览器操作等

一、seleinum八大元素定位

前言:网上百度还是老版的元素定位方法,但是对于新版Python来说,已经弃用了之前的元素定位方法,所以在使用的时候会发现有报错,会被一条横线划掉。重新整理了一下目前使用的元素定位方法:
driver.find_element(By.‘方式’, “xxx”)
1、id定位:find_element(By.ID,“kw”)
在html中元素的id是唯一的。

driver.find_element(By.ID,"kw").send_keys('大鸡排')

2.name定位:find_element(By.NAME,“su”)
在html中元素的name不是唯一的,是可以重复的。如果存在多个相同属性,那么默认定位到的是第一个。
3.class_name定位:find_element(By.CLASS_NAME,“XXX”)
在这里插入图片描述

driver.findElement(By.className("btn self-btn bg s_btn"));

4.tagname定位
在这里插入图片描述

driver.findElement(By.tagName("s_top_wrap"));

5.linkText定位,即使用超链接的文本内容定位
在这里插入图片描述

driver.findElement(By.linkText("设为首页"));

6.partialLinkText定位,即使用超链接的部分文本内容定位

 driver.findElement(By.partialLinkText("为首页"));

7.xpath定位
比如 //input[@id=“su” and @value=“百度一下”]
在这里插入图片描述

//input[@id="su" and @value="百度一下"]

8.css定位
CSS定位要比xpath定位速度快,css选择器语法非常强大。
在这里插入图片描述

二、元素操作方法

方法:
1、.send_keys() # 输入方法
2、.click() # 点击方法
3、.clear() # 清空方法

# 导包
from time import sleep
from selenium import webdriver

# 实例化浏览器
driver = webdriver.Chrome()

# 打开网址
driver.get('https://www.baidu.com/')

# 需求
ele = driver.find_element_by_css_selector('#kw')
ele.send_keys('易烊千玺')
sleep(2)

# 清空
ele.clear()
ele.send_keys('王嘉尔')

# 时间轴看效果
sleep(3)

# 关闭页面
driver.quit()

三、浏览器操作方法

方法

“”"
1、driver.maximize_window() # 最大化浏览器
2、driver.set_window_size(w,h) # 设置浏览器大小 单位像素
3、driver.set_window_position(x,y) # 设置浏览器位置
4、driver.back() # 后退操作
5、driver.forward() # 前进操作
6、driver.refrensh() # 刷新操作
7、driver.close() # 关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口)
8、driver.quit() # 关闭driver对象启动的全部页面
9、driver.title # 获取当前页面title信息
10、driver.current_url # 获取当前页面url信息
“”"

四、鼠标操作 (需要实例化鼠标对象)

1.实例化鼠标
self.action = ActionChains(self.driver)
2.鼠标事件常用的操作

"""
1、context_click(element) # 右击
2、double_click(element)  #双击
3、double_and_drop(source, target)  # 拖拽
4、move_to_element(element)  # 悬停 【重点】
5、perform()  # 执行以上事件的方法 【重点】
"""

五、切换frame

1、应用场景:
处于frame 中的元素,虽然可以获取元素信息,但是代码执行时无法定位元素,因此需要先切换到frame,再进行元素定位操作。
在这里插入图片描述

2.如何切换frame
方法:driver.switch_to.frame(“id/name/element”) 传入的是代表frame唯一的特征值

class TestCase(object):
    def setup(self):
        path = Service(executable_path="../chromedriver")
        """创建浏览器对象"""
        self.driver = webdriver.Chrome(service=path)
        """获取qq音乐网址"""        
        self.driver.get("https://y.qq.com/")
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)

    def teardown(self):
        self.driver.quit()

    def test_frame(self):
        self.driver.find_element(By.XPATH, '//*[@class="top_login__link"]').click()
        sleep(2)
        iframe = self.driver.find_element(By.XPATH, '//div[@class="login-box-bd__item current"]/iframe')
        self.driver.switch_to.frame(iframe)
        iframe1 = self.driver.find_element(By.XPATH, '//div[@class="lay_login_form"]/iframe')
        self.driver.switch_to.frame(iframe1)
        self.driver.find_element(By.ID, "switcher_plogin").click()
        sleep(2)
        element = self.driver.find_element(By.ID, 'u')
        element.send_keys("157341347654")
        element = self.driver.find_element(By.ID, 'p')
        element.send_keys("123456")
        sleep(5)
        self.driver.find_element(By.ID, "login_button").click()
        sleep(2)

六、多窗口切换、句柄操作

1、为什么要切换多窗口
​ 页面是存在多窗口的,但是selenium默认焦点只会在主窗口上的所有元素,不切换窗口,就不能操作除主窗口以外的窗口内元素。
2、如何切换
每个窗口都有唯一的一个句柄值,那么我们就可以通过句柄值来完成窗口的切换操作
​ 方法:
​ 1、driver.current_window_handle (获取当前的句柄值)
​ 2、driver.window_handles ( 获取当前由driver启动所有窗口句柄)
​ 3、driver.switch_to.window(handle) —> 切换窗口

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值