'''
size 返回元素的尺寸
text 获取元素的文本,测试用例中的断言
<a id='cp'>文本信息</a>
t_attribute(name) 获取元素属性值
is_displayed() 设置该元素是否用户可见
'''

from selenium import webdriver
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")

#获取输入框的尺寸
size=driver.find_element_by_id("kw").size
print(size)
attribute=driver.find_element_by_id("kw").get_attribute('type')
print (attribute)

result = driver.find_element_by_id("kw").is_displayed()
print (result)

#python编码问题解决
1、我们编写的源文件,自己写的脚本。
在头部定义编码
#coding=utf-8
2、执行脚本的环境语文编码
3、gb2312 标准的中文编码
4、gbk 扩展,支持繁体中文
5、cp936 windows系统里面支持中文的一种编码类型
解决:使用python IDLE运行带中文的OK,有支持各种编码

text=driver.find_element_by_id('cp').text
test2=text.encode("gbk","ignore"),decode("gbk")
print(text2)


#鼠标操作
e1=driver.find_element_by_link_text("设置")
e2=driver.find_element_by_link_text("网页")
ActionChains(driver).move_to_element(el).perform()
ActionChains(driver).drag_and_drop(e1,e2).perform()

context_click() 右击
double_click() 双击
drag_and_drop()拖动,需要两个元素,一个原点,一个目标点
move_to_element()鼠标悬停

#鼠标的操作
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
driver=webdriver.Firefox()

#输入框输入内容
driver.find_element_by_id("kw").send_keys("selenium")
sleep(2)

#输入空格键+教程
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys("教程") 如果是python2,教程前面要加U,如(U"教程")
sleep(2)

#ctrl+a全选输入框
driver.find_element_by_id("kw").send_keys("Keys.CONTROL",'a')
sleep(2)

#ctrl+x剪切
driver.find_element_by_id("kw").send_keys("Keys.CONTROL",'x')
sleep(2)

#ctrl+x粘贴
driver.find_element_by_id("kw").send_keys("Keys.CONTROL",'v')

#通过回车键盘来代替点击操作
driver.find_element_by_id("kw").send_keys("Keys.ENTER")


#获取验证信息,与自动化测试用例的时候,用来做断言验证
title=driver.title
print(title)
url=driver.current_url
print (url)

driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
#重新获取
title=driver.title
print(title)
url=driver.current_url
print (url)

#断言
if title == "selenium_百度搜索":
print('pass')
else:
print('error')

 

#显示等待:针地某个元素等待
#隐式等待,针对当页面当中的所有元素等待
from selenium import webdriver
from selenium.webdriver.common.by import by
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")

# WebDriverWait(driver,5,0.5)检测5秒种,每隔0.5秒检测一次,EC.presence_of_element_located)((By.ID,"kw"))判断该元素是否已存在,也可以使用is_displayed()检测是否为真,如果为真,则代表存在
element = WebDriverWait(driver,5,0.5).until(
EC.presence_of_element_located)((By.ID,"kw"))
)
element.send_keys("selenium")
driver.quit()

#以下方法使用is_displayed()检测元素是否存在
from selenium import webdriver
from time import sleep,ctime
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
print(ctime())

for i in range(10):
try:
e1 = driver.find_element_by_id("kwaa")
if e1.is_displayed():
break
except:pass
sleep(1)
else:
print("time out")

driver.close()
print(ctime())


#隐式等待,在开头直接定义如下driver.implicitly_wait(10)
from selenium import webdriver
from time import sleep,ctime
driver=webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("https://www.baidu.com")
e1 = driver.find_element_by_id("kwaa")
e1.send_keys('selenium')
driver.quit()