Python+Selenium基础篇之4:selenium页面设置操作方法

1.常用方法

driver = webdriver.chrome()

driver.get("http://www.baidu.com/")
driver.get_cookies()# 获取当前页面Cookie
driver.page_source# 打印网页渲染后的源代码
driver.save_screenshot("长城.png")#截图
driver.get_screenshot_as_file(r'E\a.png')#截图
driver.current_url
driver.title
driver.set_window_size(800,480)
driver.maximize_window()
driver.forward()
driver.back()
driver.refresh()
driver.close()
driver.quit()
driver.find_element_by_id('kw').clear()
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('kw').submit()
driver.find_element_by_id('su').click()
driver.find_element_by_id('kw').size   #返回元素输入框窗口的尺寸
driver.find_element_by_id('cp').text  #返回元素的文本
driver.find_element_by_id('kw').get_attribute('type') #返回元素的属性值
driver.find_element_by_id('kw').is_displayed()  #返回元素是否可见的布尔值
2.鼠标事件
from selenium.webdriver import ActionChains

# 鼠标移动到 ac 位置
ac = driver.find_element_by_xpath('element')
ActionChains(driver).move_to_element(ac).perform()


# 在 ac 位置单击
ac = driver.find_element_by_xpath("elementA")
ActionChains(driver).move_to_element(ac).click(ac).perform()

# 在 ac 位置双击
ac = driver.find_element_by_xpath("elementB")
ActionChains(driver).move_to_element(ac).double_click(ac).perform()

# 在 ac 位置右击
ac = driver.find_element_by_xpath("elementC")
ActionChains(driver).move_to_element(ac).context_click(ac).perform()

# 在 ac 位置左键单击hold住
ac = driver.find_element_by_xpath('elementF')
ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform()

# 将 ac1 拖拽到 ac2 位置
ac1 = driver.find_element_by_xpath('elementD')
ac2 = driver.find_element_by_xpath('elementE')
ActionChains(driver).drag_and_drop(ac1, ac2).perform()

3.键盘事件

from selenium.webdriver.common.keys import Keys

# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')

# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')

# 输入框重新输入内容
driver.find_element_by_id("kw").send_keys("itcast")

# 模拟Enter回车键
driver.find_element_by_id("su").send_keys(Keys.ENTER)

4.页面验证信息

driver.current_url
driver.title
driver.find_element_by_id('cp').text
try:元素 except:

5.页面等待

  强制等待:time.sleep()

  隐式等待:

driver.implicitly_wait(10)
  显示等待:
from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverWait 库,负责循环等待
from selenium.webdriver.support.ui import WebDriverWait
# expected_conditions 类,负责条件出发
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("http://www.xxxxx.com/loading")
try:
    # 页面一直循环,直到 id="myDynamicElement" 出现
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()
6.表单frame与窗口句柄切换
driver.switch_to.frame('iframe2')
driver.get("http://bj.ganji.com/")
sleep(6)

h = driver.current_window_handle

driver.find_element_by_link_text('北京招聘').click()
sleep(6)
all_h = driver.window_handles

for i in all_h:
    if i != h:
        driver.switch_to.window(i)
        print(driver.current_window_handle)
        print(driver.title)
sleep(2)
driver.close()
sleep(1)
driver.switch_to.window(h)
a=driver.find_element_by_xpath('//*[@id="rememzhiwei"]/div/span/a[1]').text
7.对话框处理
  
driver.get("http://www.maiziedu.com/")
sleep(15)

a=driver.current_window_handle
print(a)
#关闭弹框
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div/div').click()

#关闭对话框
driver.switch_to.frame('MEIQIA-IFRAME')
b=driver.current_window_handle
print(b)
driver.find_element_by_xpath('//*[@id="btnHideChat"]/i').click()

8.alert警告框处理

#接受提示框
driver.switch_to_alert().accept()

driver.switch_to_alert().text
driver.switch_to_alert().dismiss()
driver.switch_to_alert().send_keys()

9.上传文件

driver.find_element_by_name('file').send_keys(r'E\a.txt') #定位上传按钮,添加本地文件
10.滚动条调用js
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.set_window_size(800,800)
driver.implicitly_wait(10)

driver.get('https://www.baidu.com/')

driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()

time.sleep(5)

driver.execute_script('window.scrollTo(100,450);')
time.sleep(5)

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://tieba.baidu.com/index.html")
time.sleep(1)

target_elem = driver.find_element_by_link_text("地区")
driver.execute_script("return arguments[0].scrollIntoView();", target_elem)  # 用目标元素参考去拖动
# driver.execute_script("scroll(0,2400)") # 这个是第二种方法,比较粗劣,大概的拖动

11.html5视频播放
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(5)

driver.get('http://videojs.com/')

video = driver.find_element_by_xpath('//*[@id="preview-player_html5_api"]')

#返回播放文件地址
url = driver.execute_script("return arguments[0].currentSrc;",video)
print(url)

#播放视频
driver.execute_script("return arguments[0].play()",video)

#播放15秒钟
sleep(15)

#暂停视频
driver.execute_script("return arguments[0].pause()",video)
12.日志捕捉
    
import logging
from selenium import webdriver

logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') #format参数可以不用

logger = logging.getLogger('baidu_search')

driver = webdriver.Chrome()
logger.info("打开谷歌浏览器")

driver.maximize_window()
logger.info("浏览器窗口最大化")

driver.implicitly_wait(10)
logger.info("隐式等待10秒")

driver.get('https://www.baidu.com/')
logger.info("打开百度首页")

driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
import time
import os

class Loginfo(object):
    def __init__(self, mode='w'): #打开文件
        path = os.path.dirname(os.path.abspath('.')) + '/mokuaihua/logs/'  # 日志存储路径
        filename = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())+'.txt'
        self.log = open(path+filename,mode,encoding='utf-8')

    def log_write(self,msg):
        self.log.write(msg)

    def log_close(self):
        self.log.close()

if __name__ == '__main__':
    log = Loginfo()
    log.log_write('test 测试')
    log.log_close()













猜你喜欢

转载自blog.csdn.net/zupzng/article/details/80630021