ifram 和select Chrome 67的版本对2.46 5453

from selenium import webdriver
#shu水表操作
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select

driver = webdriver.Firefox()
driver.get('http://ui.imdsx.cn/html/')
import time
time.sleep(1)
driver.execute_script('window.scrollTo(0,1500);')
time.sleep(1)
# 截图
# driver.get_screenshot_as_file('pngdemo.png')
#
# el = driver.find_element_by_css_selector('[href="/new-index/"]')
# el.click()
# print(driver.window_handles)
# 獲取全部tag的标签名
# handles = driver.window_handles
# 切换到新的tab页面,过时的写法
# driver.switch_to_window(handles[1])
# time.sleep(1)
#
# driver.switch_to.window(handles[1])
#
#
# driver.find_element_by_css_selector('#newtag').send_keys('xxxx')
#
# 关闭页面关闭当前的页面 ruguo关闭页面,必须 手动切换页面,不会自动切换
# driver.close()
# driver.switch_to.window(handles[0])
# driver.find_element_by_css_selector('#i1').send_keys('xxxx')
# 退出驱动,点x的操作
# driver.quit()
# 切换ifram
# 什么是ifram\\
# 如果有name属性或者id属性 可以直接在frame中填写
# 如果没有name和id属性 可以接受elementobj
# eleobj = driver.find_element_by_css_selector('[src="/new-index/"]')
# driver.switch_to.frame('top-frame')
# driver.switch_to.frame(eleobj)
# driver.find_element_by_css_selector('#newtag').send_keys('xxxx')
# driver.switch_to.frame('baidu-frame')
# driver.find_element_by_css_selector('#kw').send_keys('xxxx')
# #返回上一层,qingkong
# # driver.switch_to.parent_frame()
# #浏览器句柄
# print(driver.window_handles)
#
# handles = driver.window_handles
# 下面这两个是一样的
# driver.switch_to_window(handles[1])
# driver.switch_to.window(handles[1])
#
#
# driver.find_element_by_css_selector('#newtag').clear()
# driver.switch_to.frame('baidu-frame')
#
# driver.find_element_by_css_selector('#kw').clear()
#
#
#
# driver.find_element_by_css_selector('#i1')
#
# #guanb关闭页面,如果指针切换了,必须手动再切换回来,不会默认切回来
#
# driver.switch_to.frame('top-fram')
# driver.find_element_by_css_selector('#alert').click()
# #alert处理 alert是确认,
# #print(driver.swith_to.alert.text)
# driver.switch_to.alert.accept()#确认
# driver.switch_to.dismiss()#取消

#webdriver的api 就是 上面这些讲完了


#element的api
# el = driver.find_element_by_css_selector('#dis1')
#判断元素是否在页面上展示
#print(el.is_displayed())

# driver.execute_script(" document.getElementById('dis1').style.display='';")
# print(el.is_displayed())
#
# driver.find_element_by_css_selector('#dis1').click()


#要取悬浮的元素
# el = driver.find_element_by_css_selector('#a')
# dis1 = driver.find_element_by_css_selector('#dis1')
# #鼠标操作,self本类。链式编程,调用perform时正去执行
# ActionChains(driver).move_to_element(el).click(dis1).perform()

#拖拽图片
# source = driver.find_element_by_css_selector('#dragger')
# source1 = driver.find_element_by_css_selector('#dragger1')
# target= driver.find_element_by_css_selector('#i1')
# target1= driver.find_element_by_css_selector('#i2')
# ActionChains(driver).drag_and_drop(source,target).drag_and_drop(source1,target1).perform()

#select 标签 selenium 专门提供了额select

#实例化select 接受一个select标签
#dingwreiselect
#分析:属性都是name,所以通过xpath来定位
select = driver.find_element_by_xpath("//select[1]")
#通过 select标签的option中的value字段定位
Select(select).select_by_value('4')


Chrome 2.40

=================================================================================
三种等待

#大工程 等待
#第一种就是time.sleep() 这种就是low的
#隐士等待 driver.implicitly_wait(10) dangni打开URL的时候,第一时间等待,等你加载成功后
#一般应用全局,基本不用

#最后一种 显示等待 需要导入类库
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
#until 每隔0.5秒,扫描一下定位的元素,找到了就 返回 ,找不到就报错
WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located((By.ID,'su')))

*by的意思,举例:
把元祖拆分成demo要的参数,传递进去,打印出来
def demo(name,age):
print(name)
print(age)
v = ('dsx',18)
demo(*v)

dsx
18

#guibi 环境的卡顿问题,也可以正常执行
# ele = WebDriverWait(driver,10,1).until(EC.presence_of_element_located((By.ID , 'i1')))
# ele.send_keys('xxxx')
ele = WebDriverWait(driver,10,1).until(EC.presence_of_element_located((By.ID , 'i12')))
# ele.send_keys('xxxx')

#如何避免异常报错
#我们通过显示等待的方式,动态的识别这个元素,每隔多少秒扫苗一次,步长和超时时间可以自己配置,


# #工作当中可以封装
# css= 'css=>#i1'
# wait_element
# get_element(css)



转载于:https://www.cnblogs.com/yqcf/p/9501060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值