实现:在新浪微博登录页面点击注册,在注册页面邮箱地址输入框中输入邮箱地址,再次跳转到登录页面。
from selenium import webdriver
import time as t
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("http://mail.sina.com.cn/")
driver.implicitly_wait(30)
#获取当前窗口句柄
now_handle=driver.current_window_handle
t.sleep(2)
#点击注册链接
driver.find_element(By.LINK_TEXT,'注册').click()
t.sleep(2)
handles=driver.window_handles
for handle in handles:
if handle!=now_handle:
driver.switch_to.window(handle)
t.sleep(2)
driver.find_element(By.NAME,'email').send_keys('RLT')
t.sleep(2)
#关闭注册页面
driver.close()
#切换到登陆页面
driver.switch_to.window(now_handle)
t.sleep(3)
#在输入框中输入邮箱
driver.find_element(By.ID,'freename').send_keys('RLT')
t.sleep(4)
driver.quit()
#对页面进行刷新 driver.refresh()
#输出执行的浏览器
print('测试执行的浏览器为:{0}'.format(driver.name))
#清空A的关键字
A.clear()
#获取元素属性值
A.get_attribute('xxx')
#检查该元素对用户是否可见
A.is_played()
#检查该元素对用户是否可编辑
A.is_enabled()
#检查是否已选中(主要针对单选按钮或复选按钮)
A.is_selected()
#提交表单,点击提交按钮,跳转到另一个页面
A.sumbit()
显性等待:
只要在10s内,只要百度首页的搜索输入框可以正确加载出来,都是可以在输入框中输入搜索的关键字,代码如下:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
so=WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable((By.ID,'kw')))
so.send_keys('Selenium')
driver.quit()
判断元素是否可见:
WebDriverWait(driver,10).until(expected_conditivisibility_of_element_located((By.LINK_TEXT,'关于百度')))
鼠标事件:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
#鼠标悬浮停操作
element=driver.find_element(By.CSS_SELECTOR,'#s-usersetting-top')
t.sleep(3)
ActionChains(driver).move_to_element(element).perform()
t.sleep(3)
driver.find_element(By.CSS_SELECTOR,'#s-user-setting-menu > div > a:nth-child(2) > span').click()
t.sleep(2)
driver.get("http://www.baidu.com")
#鼠标在百度搜索框输入框右键操作
actionChains=ActionChains(driver)
so=driver.find_element(By.ID,'kw')
actionChains.context_click(so).perform()
t.sleep(6)
driver.get("http://www.baidu.com")
#对百度按钮进行双击操作
actionChains=ActionChains(driver)
driver.find_element(By.ID,'kw').send_keys('selenium')
locator=driver.find_element(By.ID,'su')
actionChains.double_click(locator).perform()
t.sleep(6)
driver.quit()
键盘事件实战(选中、复制、粘贴):
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
so=driver.find_element(By.ID,'kw')
so.send_keys('selenium')
#选中输入框的搜索关键字
so.send_keys(Keys.CONTROL,'a')
#复制搜索的关键字
so.send_keys(Keys.CONTROL,'c')
#按下Backspace删除输入的搜索关键字
so.send_keys(Keys.BACKSPACE)
#打开bing的搜索首页
driver.get('http://www.bing.com')
bingso=driver.find_element(By.ID,'sb_form_q')
#复制搜索关键字到bing的输入搜索框中
bingso.send_keys(Keys.CONTROL,'v')
t.sleep(6)
driver.quit()
Selenium提供的对javascript的处理,调用的方法是execute_script
浏览器滑动操作:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
driver.find_element(By.ID,'kw').send_keys('s')
driver.find_element(By.ID,'su').click()
#浏览器滑动到底部js代码
down='var q=document.documentElement.scrollTop=10000'
t.sleep(3)
#操作js实现鼠标滑动到浏览器底部
driver.execute_script(down)
t.sleep(3)
#点击下一页
driver.find_element(By.XPATH,'//*[@id="page"]/div/a[10]').click()
t.sleep(3)
#操作js实现鼠标滑动到浏览器顶部
up='var q=document.documentElement.scrollTop=0'
driver.execute_script(down)
t.sleep(3)
driver.execute_script(up)
t.sleep(3)
driver.quit()
富文本的处理、时间控件的处理
获取当前截图:
driver.save_screenshot('xxx.png')
保存当前屏幕截图
driver.get_screenshot_as_file('路径')
获取图片二进制数据
driver.get_screenshot_as_png()