selenium基础操作和显示等待

不羁岁月 提交于 2020-02-18 07:15:07

selenium基础操作

'''
selenium基础操作
'''
from selenium import webdriver

#1、创建一个驱动
# driver = webdriver.PhantomJS()#无界面的
driver = webdriver.Chrome()# 有界面的
# driver = webdriver.Firefox()# 火狐浏览器也支持selenium

#2、请求url
driver.get('http://www.baidu.com/')
#3可以通过dirver对象对页面进行一些操作。
#获取页面元素
'''
driver.find_element_by_id()#通过id属性查找
driver.find_element_by_xpath()#通过xpath路径查找
driver.find_element_by_css_selector()#通过css选择器查找
'''
input_ = driver.find_element_by_id('kw')
print(input_)#WebElement 对象
#WebElement 对象可以做的事情
input_.send_keys(u'python爬虫')
#查看元素的位置
# print(input_.location)
#查看元素大小
# print(input_.size)
#截屏
driver.save_screenshot('befor_click.png')
#点击
driver.find_element_by_xpath('//*[@id="form"]/span[2]').click()

driver.close()#关闭选项卡
driver.quit()#关闭浏览器

显示等待

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC#seleniunm内置一些条件
from selenium.webdriver.common.by import By
def get_content_by_selenium(self,url):
        #1,创建驱动
        # driver = webdriver.PhantomJS()

        #2请求url
        self.driver.get(url)
        #3、等待
        #强制等待:弊端:死板,而且有的时候还可能等待不够,造成数据的缺失
        # time.sleep(3)
        #隐式等待:相当于页面在等待到转圈圈结束,页面完全加载出来位置。
        #弊端:等待的还是太久了。
        # driver.implicitly_wait(10)#10秒钟还没有全部加载完成的话,就会报超时异常
        #显示等待:可以聚焦到页面中特定元素出现就等待结束。
        # 使用显示等待步骤
        #(1)、创建等待对象
        # 20:显示等待的最大等待时长,20秒还没等待到特定元素加载出来,就报一个超时异常
        #driver:表示这个等待对象监听到那个驱动浏览器程序上
        wait = WebDriverWait(self.driver,20)
        # (2)用wait对象来进行条件判断
        '''
        EC.presence_of_element_located(定位器)
        定位器是一个元祖(用什么定位器:id,xpath,css,'对应的选择器的语法')
        '''
        wait.until(EC.presence_of_element_located((By.XPATH,'//div[@id="root"]')))#等到啥时候为止
        #4、获取页面内容
        return self.driver.page_source
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!