Python爬虫之selenium高级功能

摘要:
Python爬虫之selenium高级功能原文地址表单操作元素拖拽页面切换弹窗处理表单操作表单里面会有文本框、密码框、下拉框、登陆框等。fromselenium.webdriver.support.uiimportSelectselect=Selectselect.select_by_indexselect.select_by_visible_textselect.select_by_value取消全部选择:select=Selectselect.deselect_all()获取已选选择:select=Selectall_selected_options=select.all_selected_options获取可选选项:options=select.options最后提交表单:driver.find_element_by_id.click()注意:WebDriver会在表单中寻找它所在的表单,如果发现这个元素并没有被表单所包围,那么程序会抛出NoSuchElementException的异常。element=driver.find_element_by_nametarget=driver.find_element_by_namefromselenium.webdriverimportActionChainsaction_chains=ActionChainsaction_chains.drag_and_drop.perform()这样就实现了元素从source拖动到target的操作。
Python爬虫之selenium高级功能

原文地址

表单操作

元素拖拽

页面切换

弹窗处理

表单操作

表单里面会有文本框、密码框、下拉框、登陆框等。

这些涉及与页面的交互,比如输入、删除、点击等。

前提是找到页面中的元素。

例如下面有一个表单输入框:

<input type="text" name="passwd" id="passwd-id" />

获取这个元素的方法:

element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_elements_by_tag_name("input")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")

注意:使用 xpath 的时候还需要注意的是,如果有多个元素匹配了 xpath,它只会返回第一个匹配的元素。如果没有找到,那么会抛出 NoSuchElementException 的异常。

获取元素之和就要进行输入与点击操作了

输入:

element.send_keys("some text")

点击:

利用 Keys 这个类来模拟点击某个按键,当然首先你要获取按键元素。

element.send_keys("and some", Keys.ARROW_DOWN)

第二种方法:我们获取了按键元素,我们就可以使用click方法点击了

button = broswer.find_element_by_class_name('btn-search')
#点击按钮
button.click() 

删除:

当你元素使用send.keys方法输入字符后,输入的内容不会自动清除,如果我们要输入第二次,就要把第一次的内容删除掉:

element.clear()

上面都是简单的操作,如果我们遇到下拉框应该怎么办呢

 WebDriver 中提供了一个叫 Select 的方法,可以帮助我们完成这些事情。

可以根据索引来选择,可以根据值来选择,可以根据文字来选择。

from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name'))
select.select_by_index(index)
select.select_by_visible_text("text")
select.select_by_value(value)

取消全部选择:

select = Select(driver.find_element_by_id('id'))
select.deselect_all()

获取已选选择:

select = Select(driver.find_element_by_xpath("xpath"))
all_selected_options = select.all_selected_options

获取可选选项:

options = select.options

最后提交表单:

driver.find_element_by_id("submit").click()

注意:WebDriver 会在表单中寻找它所在的表单,如果发现这个元素并没有被表单所包围,那么程序会抛出 NoSuchElementException 的异常。

元素拖拽

要完成元素的拖拽,首先你需要指定被拖动的元素和拖动目标元素,然后利用 ActionChains 类来实现。

element = driver.find_element_by_name("source")
target = driver.find_element_by_name("target")

from selenium.webdriver import ActionChains
action_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perform()

这样就实现了元素从 source 拖动到 target 的操作。

页面切换

一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。切换窗口的方法如下:

driver.switch_to_window("windowName")

另外你可以使用 window_handles 方法来获取每个窗口的操作对象。例如:

for handle in driver.window_handles:
    driver.switch_to_window(handle)

另外切换 frame 的方法如下

driver.switch_to_frame("frameName.0.child")

这样焦点会切换到一个 name 为 child 的 frame 上。

  弹窗处理

当你出发了某个事件之后,页面出现了弹窗提示,那么你怎样来处理这个提示或者获取提示信息呢?

alert = driver.switch_to_alert()

通过上述方法可以获取弹窗对象。

免责声明:文章转载自《Python爬虫之selenium高级功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇软件开发行为规范-华为[Oracle Data Cartridge Interface] UserDefined Aggregation Functions下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pypy安装、使用

今天突然想起了入门时看过的一篇文章,关于提升python运行效率的。其中,我只记得了被冠名为终极大杀器的"pypy"。 pypy就是一个python的解释器。关于pypy解释,网上内容一大堆,我这小白就不出丑了。 废话不多说了,直接开始干活。 (以下命令在Ubuntu server18.04LTS中,都成功了。CentOS的命令已用注释表明。全局环境下不要...

Python-判断正负小数

#1、必须只有一个小数点 #2、小数点的左边必须是整数,小数点的右边必须是正整数 def is_float1(s=None): s = str(s) #.1 if s.count('.')==1: left,right = s.split('.') #['-','1'] if left.isdigit() a...

Python——PYQT:控件基本使用

QtGui.QComboBox控件常用函数: .addItem(string) #添加字符串项到Item .addItems(list) #添加列表或元组元素到Item .clear() #清除所有Item .clearEditText() #清除编辑框内容 .count() #返回Item数目 .currentIndex...

Python爬虫之定时抢购淘宝商品

Python爬虫之定时抢购淘宝商品 importtime from selenium importwebdriver importdatetime classSpider: def __init__(self, url): self.__base_url =url self.__headers ={...

Select 语句执行顺序以及如何提高Oracle 基本查询效率

作者:技术改变世界 今天把这几天做的练习复习了一下,不知道自己写得代码执行的效率如何以及要如何提高,于是乎上网开始研究一些材料,现整理如下: 首先,要了解在Oracle中Sql语句运行的机制。以下是sql语句的执行步骤:1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权...

sqlplus常用操作命令(转)

SQL*PLUS 是Oracle提供的一个工具程序,它不仅可以用于测试,运行SQL语句和PL/SQL块,而且还可以用于管理Oracle数据库  1.启动sql*plus 为了使用sql*plus,必须首先要启动sql*plus。Oracle不仅提供了命令行和图形界面的sql*plus,而且还可以在web浏览器中运行. (1)在命令运行sql*plus...