Python+Selenium用法(一)

前提

from selenium import webdriver
driver = webdriver.Chrome()

一、定位

selenium一共提供了八种定位方式,通过这些定位方式即可创建对象。

from selenium.webdriver.common.by import By   #导包

driver.finfd_element(By.ID, 'id属性值')
driver.find_element(By.NAME, 'name属性值')
driver.find_element(By.CLASS_NAME, 'class属性值')
driver.find_element(By.TAG_NAME, 'html标签名称')
driver.find_element(By.XPATH, 'xpath表达式')
driver.find_element(By.CSS_SELECTOR, 'css表达式')

driver.find_element(By.LINK_TEXT, '文本信息')
'''
1、只能定位 a 标签
2、元素内容必须为全部匹配,不能只写一部分
3、如果想写一半,就用 partial_link_text ,但必须唯一关键词
4、如果有多个,不是唯一,则返回第一个
'''

二、frame切换

进入frame有几种方法:

1、index:传入整形的参数,从 0 开始
driver.switch_to.frame(0)

2、id : frame 的 id
driver.switch_to.frame(“id”)

3、name : frame 的name
driver.switch_to.frame(“name”)

4、WebElement :传入 selenium.webelement 对象
driver.switch_to.frame(driver.find_element(By.TAG_NAME(‘iframe’)))

# 第一,创建frame对象
ele = driver.find_element(By.XPATH, 'xpath信息')

#第二,传入frame对象,切换到对应frame中
'''
1、可直接传入frame 的 id、name 等信息
2、可直接传入frame 的 frame编号,第一个编号为 0 
3、若存在frame 嵌套,需要一层层进入
'''
driver.switch_to.frame(ele)

#第三、退出当前frame
driver.switch_to.default_content()

driver.switch_to.parent_frame()  #切换到父级frame

三、浏览器操作

''' 最大化窗口 '''
driver.maximize_window()

''' 设置浏览器窗口大小 '''
driver.set_window_size(width=00, height=00)

''' 设置窗口位置 '''
driver.set_window_position(x=00, y=00)

''' 后退 '''
driver.back()

''' 前进 '''
driver.forward()	

''' 刷新 '''
driver.refresh()

''' 关闭当前页面 '''
driver.close()

''' 关闭所有页面 '''
driver.quit()

''' 获取当前页面 title '''
print(driver.title)

''' 获取当前页面 URL '''
print(driver.current_url)

四、获取元素信息

''' 获取元素的大小和文本 '''
print(driver.find_element(By.XPATH, 'xpath')).size
print(driver.find_element(By.XPATH, 'xpath')).text

''' 获取超文本链接 '''
driver.find_element(By.XPATH, 'xpath').get_attribute("herf")

''' 判断元素是否 可见、可用、是否被选中 '''
driver.find_element(By.XPATH, 'xpath').is_displayed()
									  .is_enabled()
									  .is_selected()  


五、鼠标操作

使用步骤
1、实例化对象
action = ActionChains(driver)
2、通过对象调用函数
3、通过 perform() 执行操作

from selenium.webdriver import ActionChains  #导包

action = ActionChains(driver)  #实例化对象

''' 右击鼠标 '''
action.context_click(driver.find_element(By.XPATH, 'xpath')).perform()

#或者
ActionChains(driver).context_click(driver.find_element(  ))

''' 双击鼠标 '''
action.double_click(driver.find_element(By.XPATH, 'xpath')).perform()

''' 移动鼠标,悬停到某个元素 '''
action.move_to_element(driver.find_element(By.XPATH, 'xpath')).perform()

''' 拖拽事件 '''
source = driver.find_element(By.XPATH, 'xpath')
target = driver.find_element(By.XPATH, 'xpath')
action.drag_and_drop(source, target).perform()

六、键盘操作

模拟键盘上一些按键或组合键的输入

from selenium.webdriver import Keys	   #导包

driver.find_element(By.XPATH, 'xpath').send_keys(Keys.Back_SPACE)
                                                 Keys.SPACE      #空格
                                                 Keys.ESCAPE
                                                 Keys.ENTER     #回车
                                                 Keys.CONTROL, 'a'  #ctrl+a
                                                               'c'

七、基本操作

driver.find_element(By.XPATH, 'xpath').click()  #点击

driver.find_element(By.XPATH, 'xpath').send_keys("")    #输入

driver.find_element(By.XPATH, 'xpath').clear()  #清空

driver.find_element(By.XPATH, 'xpath').submit()    #提交表单

八、等待

三种等待方式:显示等待、隐式等待、强制等待

1、显示等待

#导包
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions

'''
显示等待:
    1、在代码中自定义等待条件,当条件发生时才继续执行代码
    2、WebDriverWait 配合 until() 和 until_not()方法,根据判断条件进行等待,通常配合
      expected_conditions 模块使用
    3、程序每隔一段时间(默认0.5秒)进行条件判断,如果条件成立,则执行下一步,否则继续等待,直到超时
    
格式:
    WebDriverWait(driver, 超时时间, 轮询时间).until(等待条件)
    WebDriverWait(driver, 超时时间, 轮询时间).until_not(等待条件)
      
'''

WebDriverWait(driver, 10, 1).until(expected_conditions.element_to_be_clickable((By.XPATH, 'xpath')))
#然后下一步

2、隐式等待

'''
隐式等待:
    1、每当 driver 执行动作时,暂停程序直到满足 driver 执行条件,若暂停时间超出设置的时间n秒,则触发异常
    2、隐式等待为全局配置,设置一次即可
    
格式:
    driver.implicitly_wait(n)  单位为秒
'''

driver.implicitly_wait(20)

3、强制等待

'''
强制等待:
    强制暂停程序运行,等待 n 秒后继续执行后续代码
    
格式:
    time.sleep(n)  单位为秒
'''

time.sleep(3)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白瑟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值