2018年python3与selenium教程第2节

继上篇 2018年python3与selenium教程第1节

动作链实现拖曳效果

拖曳效果演示地址

拖曳效果

源码:

from selenium import webdriver
from selenium.webdriver import ActionChains
import time

browser = webdriver.Chrome() # 声明浏览器
url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
browser.get(url) # 访问网页
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_css_selector('#draggable')
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()
time.sleep(2)
browser.close() # 关闭浏览器

更多用法详见官方文档

执行Javascript

Selenium Api并没有提供所有操作的api, 但支持模拟运行Javascript, 所以我们可以自己写js代码实现

如:打开知乎,将进度条拉到最下方,然后弹出提示框

源码:

from selenium import webdriver
import time

browser = webdriver.Chrome() # 声明浏览器
url = 'https://www.zhihu.com/explore'
browser.get(url) # 访问网页
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 拉到底部
time.sleep(1)
browser.execute_script('alert("已经拉到底部了")') # 弹出提示框
time.sleep(2)
browser.close() # 关闭浏览器

获取节点信息

获取属性

源码

from selenium import webdriver
import time

browser = webdriver.Chrome() # 声明浏览器
url = 'https://www.zhihu.com/explore'
browser.get(url) # 访问网页
logo = browser.find_element_by_id('zh-top-link-logo')
print(logo)
print(logo.get_attribute('class')) # 获取属性值
time.sleep(2)
browser.close() # 关闭浏览器

结果

···bash
☁ crawler python3 test_selenium.py
<selenium.webdriver.remote.webelement.WebElement (session="f2edd53188f80a92556bfd40a79e7c59", element="0.8775386946103669-1")>
zu-top-link-logo


## 获取文本值

源码

```python
from selenium import webdriver
import time

browser = webdriver.Chrome() # 声明浏览器
url = 'https://www.zhihu.com/explore'
browser.get(url) # 访问网页
button = browser.find_element_by_id('zu-top-add-question')
print(button.text) # 获取节点文本值
time.sleep(2)
browser.close() # 关闭浏览器

结果

☁  crawler  python3 test_selenium.py
提问

获取其他信息

源码

from selenium import webdriver
import time

browser = webdriver.Chrome() # 声明浏览器
url = 'https://www.zhihu.com/explore'
browser.get(url) # 访问网页
button = browser.find_element_by_id('zu-top-add-question')
print(button.id) # id
print(button.location) # 位置
print(button.tag_name) # 标签名
print(button.size) # 大小
time.sleep(2)
browser.close() # 关闭浏览器

结果

☁  crawler  python3 test_selenium.py
0.3843517915558643-1
{'x': 842, 'y': 7}
button
{'height': 32, 'width': 66}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章在介绍官网的同时使用了比较多的脚本示例,示例里遇到的问题有部分在本篇文章进行了解释,还有一篇文章专门记录了...
    顾顾314阅读 12,975评论 3 32
  • Selenium 官网Selenium WebDriver官网webdriver实用指南python版本 WebD...
    顾顾314阅读 47,082评论 0 34
  • 洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出...
    厲铆兄阅读 6,758评论 3 47
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 1. AVCaptureDevice 首先, 我们需要判断设备是否支持前置摄像头和后置摄像头, 这里需要用到AV...
    霸_霸霸阅读 3,499评论 0 1