【Class 50】【实例】用selenium模块自动控制浏览器一 之浏览器配置

WebDriver 对象有好几种方法,用于在页面中寻找元素。
它们被分成find_element_*和find_elements_*方法。
find_element_*方法返回一个 WebElement 对象,代表页面中匹配查询的第一个元素。
find_elements_*方法返回 WebElement_*对象的列表,包含页面中所有匹配的元素

使用 CSS 类 name 的元素
browser.find_element_by_class_name(name) 
browser.find_elements_by_class_name(name) 

匹配 CSS selector 的元素
browser.find_element_by_css_selector(selector) 
browser.find_elements_by_css_selector(selector) 

匹配 id 属性值的元素
browser.find_element_by_id(id) 
browser.find_elements_by_id(id) 

完全匹配提供的 text 的<a>元素
browser.find_element_by_link_text(text) 
browser.find_elements_by_link_text(text) 

包含提供的 text 的<a>元素
browser.find_element_by_partial_link_text(text) 
browser.find_elements_by_partial_link_text(text) 

匹配 name 属性值的元素
browser.find_element_by_name(name) 
browser.find_elements_by_name(name) 

匹配标签 name 的元素(大小写无关,<a>元素匹配'a''A') 
browser.find_element_by_tag_name(name) 
browser.find_elements_by_tag_name(name) 

WebElement 的属性和方法

tag_name 				标签名,例如 'a'表示<a>元素
get_attribute(name) 	该元素 name 属性的值
text 					该元素内的文本,例如<span>hello</span>中的'hello'
clear() 				对于文本字段或文本区域元素,清除其中输入的文本
is_displayed() 			如果该元素可见,返回 True,否则返回 False
is_enabled() 			对于输入元素,如果该元素启用,返回 True,否则返回 False
is_selected() 			对于复选框或单选框元素,如果该元素被选中,选择 True,否则返回 False
location 				一个字典,包含键'x''y',表示该元素在页面上的位置

.click()					返回的 WebElement 对象有一个 click()方法,模拟鼠标在该元素上点击
.send_keys()				向 Web 页面的文本字段发送击键,只要找到那个文本字段的<input><textarea>元素,然后调用 send_keys()方法
.clear()					清除输入框中的文本

发送特殊键
selenium 有一个模块,针对不能用字符串值输入的键盘击键。
它的功能非常类似于转义字符。这些值保存在 selenium.webdriver.common.keys 模块的属性中。
由于这个模块名非常长,所以在程序顶部运行 from selenium.webdriver. common.keys import Keys 就比较容易。
如果这么做,原来需要写 from selenium. webdriver.common.keys 的地方,就只要写 Keys。

Keys.DOWN, Keys.UP, Keys.LEFT,Keys.RIGHT 		: 键盘箭头键
Keys.ENTER, Keys.RETURN 						: 回车和换行键
Keys.HOME, Keys.END, 
Keys.PAGE_DOWN,Keys.PAGE_UP						: Home键、End 键、PageUp 键和 Page Down 键
Keys.ESCAPE, Keys.BACK_SPACE,Keys.DELETE 		: Esc、Backspace 和字母键
Keys.F1, Keys.F2, . . . , Keys.F12 				: 键盘顶部的 F1到 F12键
Keys.TAB 										: Tab 键	

browser.back()						点击“返回”按钮。
browser.forward()					点击“前进”按钮。
browser.refresh()					点击“刷新”按钮。
browser.quit()						点击“关闭窗口”按钮。



Test 1. 打开百度一下网页,并自动搜索 python 3.0 @_@

#! python3.0
# -*- coding: utf-8 -*-

from selenium import webdriver
browser = webdriver.Chrome()
print(type(browser))

browser.get("http://www.baidu.com")

## 查找class='mnav' 的所有标签, 打印出标签名及链接
elem = browser.find_elements_by_class_name('mnav')
print("start")
for i in elem:
    print("Found %s %s "%( i.text, i.get_attribute('href') )) 

## 找到百度输入框,输入python3.0@
# 清除默认文本
browser.find_element_by_name("wd").clear()
# 输入文本
browser.find_element_by_name("wd").send_keys("python 3.0 @_@")

## 找到百度一下的链接, 自动点击百度一下
browser.find_element_by_id('su').click()
print('end')

执行结果如下:
PS C:\Users\Administrator\Desktop\tmp\new> python .\selenium_apply.py

DevTools listening on ws://127.0.0.1:55174/devtools/browser/03df56b0-b6e7-4ad5-88cb-666c67630913
<class 'selenium.webdriver.chrome.webdriver.WebDriver'>
start
Found 新闻 http://news.baidu.com/
Found hao123 https://www.hao123.com/
Found 地图 http://map.baidu.com/
Found 视频 http://v.baidu.com/
Found 贴吧 http://tieba.baidu.com/
Found 学术 http://xueshu.baidu.com/
end
PS C:\Users\Administrator\Desktop\tmp\new>

截图如下:

在这里插入图片描述

Test 2. 打开我的博客,反复发送 pageup pagedown

#! python3.0
# -*- coding: utf-8 -*-

import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
print(type(browser))

browser.get("https://blog.csdn.net/ciellee/article/category/8080019")


for i in range(5):
    ## 搜索到结果后,等待1s后发送 pagedown
    time.sleep(1)
    browser.find_element_by_tag_name('html').send_keys(Keys.PAGE_DOWN)

    ## 等待1s后发送 pageup
    time.sleep(1)
    browser.find_element_by_tag_name('html').send_keys(Keys.PAGE_UP)

## 浏览器后退
browser.back()
time.sleep(3)

## 浏览器前进
browser.forward()
time.sleep(3)

## 浏览器刷新5次
for i in range(5):
    browser.refresh()
    time.sleep(3)

## 关闭浏览器
print('end')
browser.quit()

猜你喜欢

转载自blog.csdn.net/Ciellee/article/details/88543023