• <day002>Selenium基本操作


    任务1:Selenium基本操作

      

    from selenium import webdriver
    # 通用选择
    from selenium.webdriver.common.by import By
    # 动作
    from selenium.webdriver import ActionChains
    
    from selenium.webdriver.common.keys import Keys
    # 抛出异常
    from selenium.webdriver.support import expected_conditions as EC
    # 异常处理 超时和为发现元素
    from selenium.common.exceptions import TimeoutException,NoSuchElementException
    from selenium.webdriver.support.wait import WebDriverWait
    import time
    
    # 申明驱动浏览器对象,支持Android,BlackBerry等手机端浏览器
    browser = webdriver.Chrome()
    # browser = webdriver.PhantomJS
    
    # 设置浏览器窗口大小
    browser.set_window_size(1400, 900)
    
    try:
    	# 必须输入完整URL,直接输入www.baidu.com不行
    	# 打开URL为XXX的网页
    	browser.get('http://www.baidu.com')
    	# 开启新选项卡(开启新窗口)
    	browser.execute_script('window.open()')
    	# 打印当前所有句柄
    	print(browser.window_handles)
    	# 切换句柄(选项卡)
    	browser.switch_to.window(browser.window_handles[1])
    	# switch_to_window被switch_to.window代替,用法一致
    	# browser.switch_to_window(browser.window_handles[1])
    	# 在新的选项卡中打开XXX网页
    	browser.get('https://www.taobao.com/')
    	# 切回第一个选项卡
    	browser.switch_to.window(browser.window_handles[0])
    	# 直接通过id查找
    	input1 = browser.find_element_by_id('kw')
    	# 通过css选择器查找,直接在检查中Cope→Cope selector
    	input2 = browser.find_element_by_css_selector('#kw')
    	# 通过Xpath选择器查找,可以直接在Cope→Cope xpath
    	input3 = browser.find_element_by_xpath('//*[@id="kw"]')
    
    	# 通用选择,需要先引入By   from selenium.webdriver.common.by import By
    	# By后面可以跟ID,CSS_SELECTOR,XPATH等,第二个参数就上面括号内的参数
    	input4 = browser.find_element(By.ID, 'kw')
    
    	# 多个节点也是按照上面进行查找,只是element后面加个s,find_elements
    	time.sleep(1)
    	# 输入框键入'xx'
    	input1.send_keys('美女')
    	# 清空文字
    	# input1.clear()
    	# 直接敲击键盘Enter键
    	# input.send_keys(Keys.ENTER)
    	# 通过找到id为su的搜索键,鼠标单击
    	browser.find_element_by_id('su').click()
    
    	time.sleep(1)
    	browser.execute_script('window.open()')
    	browser.switch_to.window(browser.window_handles[2])
    	browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
    	# 切换到子Frame 通常节点名字叫iframe
    	browser.switch_to.frame('iframeResult')
    	# 切换回父Frame
    	# browser.switch_to.parent_frame()
    	# 找到2个标签
    	source = browser.find_element(By.CSS_SELECTOR, '#draggable')
    	target = browser.find_element(By.CSS_SELECTOR, '#droppable')
    	# 动作链必须先引入 from selenium.webdriver import ActionChains
    	action = ActionChains(browser)
    	# 执行拖拽动作
    	# action.drag_and_drop(source, target)
    	# 有action 必须有perform方法
    	action.perform()
    
    	browser.execute_script('window.open()')
    	browser.switch_to.window(browser.window_handles[3])
    	browser.get('https://www.taobao.com/')
    	browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    	logo = browser.find_element(By.CSS_SELECTOR,'#q')
    	print(logo)
    	# 获取输入框属性值
    	print(logo.get_attribute('aria-label'))
    	# 获取搜索按钮的文字
    	input5 = browser.find_element(By.XPATH,'//*[@id="J_TSearchForm"]/div[1]/button')
    	# 文字
    	print(input5.text)
    	# 标签名
    	print(input5.tag_name)
    	# id
    	print(input5.id)
    	# 在页面中的相对位置
    	print(input5.location)
    	# 节点大小
    	print(input5.size)
    
    	# 显式等待(等待直到标签出现或超过最大等待时间)
    	# 设置最大等待时间是10秒
    	# 报错先引入 from selenium.webdriver.support import expected_conditions as EC
    	wait = WebDriverWait(browser,10)
    	# 等待直到id为q的标签出现
    	input6 = wait.until(EC.presence_of_element_located((By.ID,'q')))
    	# 等待直到按钮可以被点击
    	input7 = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
    
    	browser.switch_to.window(browser.window_handles[0])
    	# 前进和后退
    	browser.back()
    	time.sleep(3)
    	browser.forward()
    
    	# 增加一个cookie
    	browser.add_cookie({'name':'xiaohei','age':'123'})
    	# 删除 cookie
    	# browser.delete_cookie()
    	# browser.delete_all_cookies()
    
    	# 当前URL
    	print(browser.current_url)
    	# Cookie
    	print(browser.get_cookies())
    	# 源代码
    	# print(browser.page_source)
    except NoSuchElementException:
    	print("No Element")
    
    # 一定会做的事情
    finally:
    	# 关闭浏览器
    	pass
    # browser.close()

     

  • 相关阅读:
    Json Web Token
    logstash 收集 IIS 日志实践
    Lucene Query In Kibana
    autofac 在.net core 与经典asp.net中的差异
    .net core 集成 autofac.
    向量化
    神经网络学习1
    漏斗限流
    正则化(Regularization)
    简单限流
  • 原文地址:https://www.cnblogs.com/shuimohei/p/10538686.html
Copyright © 2020-2023  润新知