selenium学习笔记

1.安装selenium库

pip install selenium

2.下载驱动

https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/install_drivers/

3.第一个小项目

from selenium import webdriver
from selenium.webdriver.common.by import By

#初始化驱动
driver = webdriver.Chrome()
#打开页面
driver.get("https://www.google.com")
#获取页面标题
driver.title # => "Google"
#隐式等待 会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。
driver.implicitly_wait(0.5)
#通过name定位输入框元素
search_box = driver.find_element(By.NAME, "q")
#通过name定位点击按钮
search_button = driver.find_element(By.NAME, "btnK")
#向输入框填文字
search_box.send_keys("Selenium")
#点击添加按钮
search_button.click()
#获取输入框内容
driver.find_element(By.NAME, "q").get_attribute("value") # => "Selenium"
#退出控制
driver.quit()

4.浏览器元素

#获取标题
driver.title
#获取当前 URL
driver.current_url
#打开网站
driver.get("https://selenium.dev")
#后退一个页面
driver.back()
#前进一个页面
driver.forward()
                         

5.处理警告框,提示框和确认框

#########警告框
# 点击警告的链接
driver.find_element(By.LINK_TEXT, "See an example alert").click()

# 等待警告的加载
alert=wait.until(expected_conditions.alert_is_present())

# 存储警告的内容
text = alert.text

#点击接受按钮
alert.accept()
########Confirm 确认框 
# 点击警告框
driver.find_element(By.LINK_TEXT, "See a sample confirm").click()

# 等待警告框的加载
wait.until(expected_conditions.alert_is_present())

#用变量存储警告的内容
alert = driver.switch_to.alert

# 存储警告的内容
text = alert.text

#点击拒绝按钮
alert.dismiss()

#点击接受按钮
#alert.accept()


#######Prompt 提示框 
# 点击警告链接
driver.find_element(By.LINK_TEXT, "See a sample prompt").click()

# 等待警告加载
wait.until(expected_conditions.alert_is_present())

# 用变量存储警告的内容
alert = Alert(driver)

# 输入您的消息
alert.send_keys("Selenium")

#点击接受按钮
alert.accept()

6.处理cookies

#########     添加cookie
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.example.com")

#将cookie添加到当前的浏览器
driver.add_cookie({"name": "key", "value": "value"})

########    获取命名的 Cookie
from selenium import webdriver

driver = webdriver.Chrome()

# 导航到指定网站
driver.get("http://www.example.com")

# 将cookie添加到当前的浏览器
driver.add_cookie({"name": "foo", "value": "bar"})

# 获取名称为foo的cookie
print(driver.get_cookie("foo"))


########   获取全部 Cookies 
from selenium import webdriver

driver = webdriver.Chrome()

# 导航到指定网站
driver.get("http://www.example.com")
#将cookie添加到当前的浏览器
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})

# 获取全部 Cookies 
print(driver.get_cookies())

######   删除 Cookie
from selenium import webdriver
driver = webdriver.Chrome()

# 导航到指定网站
driver.get("http://www.example.com")
#将cookie添加到当前的浏览器
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})

# 删除名称为test1的cookie
driver.delete_cookie("test1")


######   删除所有 Cookies
from selenium import webdriver
driver = webdriver.Chrome()

# 导航到指定网站
driver.get("http://www.example.com")
#将cookie添加到当前的浏览器
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})

#  删除所有cookie
driver.delete_all_cookies()

7.iFrames


##############    使用 WebElement 
  # 存储网页元素
iframe = driver.find_element(By.CSS_SELECTOR, "#modal > iframe")

    # 切换到选择的 iframe
driver.switch_to.frame(iframe)

    # 单击按钮
driver.find_element(By.TAG_NAME, 'button').click()

######      使用 name 或 id

 # 通过 id 切换框架
driver.switch_to.frame('buttonframe')

    # 单击按钮
driver.find_element(By.TAG_NAME, 'button').click()



##########         使用索引 
# 基于索引切换到第 2 个 iframe
iframe = driver.find_elements_by_tag_name('iframe')[1]

    # 切换到选择的 iframe
driver.switch_to.frame(iframe)

# 切回到默认内容
driver.switch_to.default_content()

############  离开框架

8.窗口和标签

#####获得当前窗口的窗口句柄
driver.current_window_handle

# 打开新标签页并切换到新标签页
driver.switch_to.new_window('tab')

# 打开一个新窗口并切换到新窗口
driver.switch_to.new_window('window')
#关闭标签页或窗口
driver.close()
#切回到之前的标签页或窗口
driver.switch_to.window(original_window)

#会话结束时退出浏览器
driver.quit()


#############   设置窗口
#获取窗口大小
 # 分别获取每个尺寸
width = driver.get_window_size().get("width")
height = driver.get_window_size().get("height")

# 或者存储尺寸并在以后查询它们
size = driver.get_window_size()
width1 = size.get("width")
height1 = size.get("height")

#设置窗口大小
driver.set_window_size(1024, 768)

#得到窗口的位置
# 分别获取每个尺寸
x = driver.get_window_position().get('x')
y = driver.get_window_position().get('y')

  # 或者存储尺寸并在以后查询它们
position = driver.get_window_position()
x1 = position.get('x')
y1 = position.get('y')

# 设置窗口位置  将窗口移动到主显示器的左上角
driver.set_window_position(0, 0)

#最大化窗口 
driver.maximize_window()

#最小化窗口
driver.minimize_window()
#全屏窗口
driver.fullscreen_window()

########  屏幕截图

from selenium import webdriver

driver = webdriver.Chrome()

    # 打开网页
driver.get("http://www.example.com")

 # 返回和base64编码的字符串到图像
driver.save_screenshot('./image.png')

driver.quit()

#######  执行js脚本
 # 获取头部元素
header = driver.find_element(By.CSS_SELECTOR, "h1")

 # 执行JavaScript来捕获header元素的innerText
driver.execute_script('return arguments[0].innerText', header)

9.获取页面焦点

#通过类选择器    获取焦点到指定元素
vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")

#通过Id选择器  获取焦点到指定元素
fruits = driver.find_element(By.ID, "fruits")

fruit = fruits.find_elements_by_id("tomatoes")
  #通过CSS选择器  获取焦点到指定元素
  fruit = driver.find_element_by_css_selector("#fruits .tomatoes")
#通过标签选择器  获取焦点到指定元素
plants = driver.find_elements(By.TAG_NAME, "li")
  
#通过标签选择器  获取一组元素

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()

    # Navigate to Url
driver.get("https://www.example.com")

    # 获取所有的 P 标签     driver.find_elements
elements = driver.find_elements(By.TAG_NAME, 'p')

for e in elements:
    print(e.text)
##    获取元素CSS值
# Navigate to Url
driver.get('https://www.example.com')

# 检索链接文本的计算样式属性'color'
cssValue = driver.findElement(By.LINK_TEXT, "More information...").value_of_css_property('color')

fruit = driver.find_element_by_css_selector("#fruits .tomatoes")

10.总结

from selenium import webdriver
from selenium.webdriver.common.by import By

#初始化驱动
driver = webdriver.Chrome()
#打开页面
driver.get("https://www.google.com")
#获取页面标题
driver.title # => "Google"
#隐式等待 会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。
driver.implicitly_wait(0.5)
#通过name定位输入框元素
search_box = driver.find_element(By.NAME, "q")
#通过name定位点击按钮
search_button = driver.find_element(By.NAME, "btnK")
#向输入框填文字
search_box.send_keys("Selenium")
#点击添加按钮
search_button.click()
#获取输入框内容
driver.find_element(By.NAME, "q").get_attribute("value") # => "Selenium"
#退出控制
driver.quit()


### 显示等待 WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码
WebDriverWait(driver).until(document_initialised)


#隐式等待 在不影响程序执行的情况下等待
driver.implicitly_wait(0.5)

########  屏幕截图

from selenium import webdriver

###   元素屏幕截图
 # 返回和base64编码的字符串到图像
driver.save_screenshot('./image.png')


### 返回页面源码 可以当爬虫使用
page=driver.page_source()

selenium官方教程
https://www.selenium.dev/zh-cn/documentation/webdriver/browser/

你可能感兴趣的:(selenium,学习,python)