2.6 第一个自动化脚本
这里我们简单写一下百度搜索腾讯课堂的脚本,方法在2.4、2.5章节已经介绍过了,这里就是带看一下代码的实现,到底是怎么写的!如果我们需要其他操作就driver.对应的方法就可以了。
from selenium import webdriver
driver=webdriver.Chrome() #注意Chrome的C是大写
driver.implicitly_wait(10) #隐式等待
#访问网址from selenium import webdriver
driver=webdriver.Chrome() #注意Chrome的C是大写
driver.implicitly_wait(10) #隐式等待
#访问网址
driver.get("https://www.baidu.com")
#找元素 八大元素定位方式 找到搜索框
ele1=driver.find_element_by_xpath('//*[@id="kw"]')
#操作元素 输入元素
ele1.send_keys('腾讯课堂')
#找元素
ele2=driver.find_element_by_xpath('//*[@id="su"]')
#点击元素
ele2.click()
#退出浏览器
driver.quit()
driver.get("https://www.baidu.com")
#找元素 八大元素定位方式 找到搜索框
ele1=driver.find_element_by_xpath('//*[@id="kw"]')
#操作元素 输入元素
ele1.send_keys('腾讯课堂')
#找元素
ele2=driver.find_element_by_xpath('//*[@id="su"]')
#点击元素
ele2.click()
#退出浏览器
driver.quit()
这里在说一下no such element的一般处理方法:
1.添加隐式等待
2.添加固定等待
3.检查xpath是否是变化的或者不稳定的
4.看有没有iframe
如果有iframe,需要进入iframe
5.是否有前置操作才会显示
等待的意思就是说,我操作了但是页面元素没有加载出来,导致no such element。我们要等到元素出来再定位。说一下显示等待和隐式等待的区别吧。以等649路公交车为例: 显示等待就是一直等,直到649路公交车过来 隐式等待就是设置一个等待的时间,比如说半个小时,如果在半个小时之内我等不到649路公交车,我就不等了,我会报错。这就是隐式等待。
2.7 关键字封装
关键字驱动:把一些常用的功能封装为函数,然后可以通过函数名为关键字进行
调用,调用这个函数的时候就可以实现该功能。
我的封装就不在这里给出了,我们给大家举个简单的例子,然后需要那些封装大家自己封装吧。我这里就是定义了一个Web类,构造方法传入要创建那种浏览器。
```python
class Web:
# 创建一个属于自己的web自动化类
def __init__(self,browser='gc'):
if browser=='gc':
self.driver=webdriver.Chrome()
elif browser=='ff':
self.driver = webdriver.Firefox()
elif browser=='ie':
self.driver = webdriver.Ie()
else:
print("浏览器类型不符,默认启动谷歌浏览器")
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(10)
def geturl(self,url)
"""访问网页,url访问的地址"""
self.driver.get(url)
在使用过程中,实例化Web类的对象,然后通过调用Web类的方法,操作浏览器就行了,需要哪些操作就封装哪些方法。比如点击click,发送内容sendkeys等等
示例:
#创建Web对象,启动浏览器类型为火狐浏览器
web=Web(browser='ff')
#访问百度
web.get('http://www.baidu.com')