定位下拉框,弹框,表单,滚动条,快捷键

下拉框

定位下拉框有三种方法:

1、下标定位下拉框:select_by_index

2、value属性值定位下拉框:select_by_value

3、文本内容定位i下拉框:select_by_visible_text

定位之前要导入select 类:

from   selenium.webdriver.support.select import Select

二、实战:

案例网址:
https://yz.chsi.com.cn/zsml/zyfx_search.jsp

1、下标定位下拉框:select_by_index

id属性:

ssdm

from   selenium import  webdriver #导入selenium第三方库中webdriver
from   selenium.webdriver.support.select import Select
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://yz.chsi.com.cn/zsml/zyfx_search.jsp") #通过对象打开浏览
dx.maximize_window() #窗口最大化
wz=dx.find_element_by_id("ssdm")
Select(wz).select_by_index(2)

2、value定位下拉框:select_by_value

value值是33

from   selenium import  webdriver #导入selenium第三方库中webdriver
from   selenium.webdriver.support.select import Select
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://yz.chsi.com.cn/zsml/zyfx_search.jsp") #通过对象打开浏览
dx.maximize_window() #窗口最大化
wz=dx.find_element_by_id("ssdm")
Select(wz).select_by_value("33") #浙江省

3、文本下拉框:select_by_visible_text

from   selenium import  webdriver #导入selenium第三方库中webdriver
from   selenium.webdriver.support.select import Select
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://yz.chsi.com.cn/zsml/zyfx_search.jsp") #通过对象打开浏览
dx.maximize_window() #窗口最大化
wz=dx.find_element_by_id("ssdm")
Select(wz).select_by_visible_text("(33)浙江省")

弹框的类型

1、下载的弹框

2、弹框的类型:

(1)alert弹框

(2)确认性弹框

(3)输入性弹框

(4)上传性弹框

(5)frame弹框

3、实战

(1)alert弹框

地址:
file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html") #通过对象打开浏览
tk=dx.switch_to.alert #切换弹框
tk.accept() #确认
sleep(2)
tk.accept() #确认

取消

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html") #通过对象打开浏览
tk=dx.switch_to.alert #切换弹框
sleep(3)
tk.dismiss() #取消

(2)确认性弹框

from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get(r"file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/enter.html")
dx.find_element_by_class_name("alert").click()
tk=dx.switch_to.alert #切换弹框
sleep(3)
tk.accept()#确认


(3)输入性弹框

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get(r"file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/prompt.html")
dx.find_element_by_class_name("alert").click()
tk=dx.switch_to.alert #切换弹框
tk.send_keys("hz")
tk.accept()

(4)上传性弹框

链接:
file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/upload_file.html

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get(r"file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/upload_file.html")
dx.find_element_by_id("file").send_keys(r"E:\dcs\two\selenium\弹框\table.html")

(5)frame弹框

链接:
https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=84C8F7977ED7653BB9E28C6396A442A045F2A4DBBEE2D115DC961B2CB6DCC8F81DB107254144162E972769188FB4AC23&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fuuid%3Da90096cfbd274a3f9fe6123ce21a592d

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get(r"https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=84C8F7977ED7653BB9E28C6396A442A045F2A4DBBEE2D115DC961B2CB6DCC8F81DB107254144162E972769188FB4AC23&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fuuid%3Da90096cfbd274a3f9fe6123ce21a592dl")
sleep(2)
wz=dx.find_element_by_id("ptlogin_iframe")
dx.switch_to.frame(wz) #进框
dx.find_element_by_link_text("密码登录").click() #点不到
dx.switch_to.default_content()  #退框
dx.find_element_by_link_text("服务协议").click() #可以点


定位一个表单

实战

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  selenium.webdriver.support.select import Select
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("file:///E:/dcs/two/selenium/%E5%BC%B9%E6%A1%86/table.html")
sleep(2)
dx.find_element_by_name("user").send_keys("admin")
sleep(2)
dx.find_element_by_name("passwd").send_keys("123456")
sleep(2)
dx.find_element_by_name("conpasswd").send_keys("123456")
sleep(2)
dx.find_element_by_xpath("/html/body/form/table/tbody/tr[5]/td[2]/input[1]").click()
sleep(2)
dx.find_element_by_xpath("/html/body/form/table/tbody/tr[6]/td[2]/input[1]").click()
sleep(2)
wz=dx.find_element_by_xpath("/html/body/form/table/tbody/tr[7]/td[2]/select")
Select(wz).select_by_visible_text("家里蹲大学")
sleep(2)
dx.find_element_by_xpath("/html/body/form/table/tbody/tr[8]/th/input[2]").click()

滚动条

一、滚动条

语句:window.scrollTo

js写的

案例:

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://www.jd.com/")
js1="window.scrollTo(0,2000)" #脚本内容,一般滑动1000
dx.execute_script(js1) #执行脚本
sleep(2)
js2="window.scrollTo(0,0)" #脚本内容,回到开始
dx.execute_script(js2) #执行脚本

第二种滚动条的方法:

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://www.jd.com/")
js1="var  d=document.documentElement.scrollTop=2000"
dx.execute_script(js1)
js2="var  d=document.documentElement.scrollTop=0"
dx.execute_script(js2)

三、每次拉取递增的量

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://www.jd.com/")
x=0
while  x<=5000:
     x+=1000
     js1="var  d=document.documentElement.scrollTop="+str(x)
     dx.execute_script(js1)

快捷键

导入key 类

from  selenium.webdriver.common.keys import  Keys

输入(send_keys)、全选("a)、剪切("x")、黏贴("v")、确认(Keys.ENTER)

案例:

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  selenium.webdriver.common.keys import  Keys
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://www.baidu.com/")
dx.find_element_by_id("kw").send_keys("hz") #输入
sleep(3)
dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"a") 全选
sleep(3)
dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"x") 剪切
sleep(3)
dx.find_element_by_id("kw").send_keys(Keys.CONTROL,"v") 粘贴
sleep(3)
dx.find_element_by_id("kw").send_keys(Keys.ENTER) 确认

快捷键封装:

from   selenium import  webdriver #导入selenium第三方库中webdriver
from  selenium.webdriver.common.keys import  Keys
from  time import  sleep
dx=webdriver.Chrome() #创建一个对象来来调用谷歌浏览器的对象
dx.get("https://www.baidu.com/")
sleep(2)
def  kj(wz,*kjc):
    dx.find_element_by_id(wz).send_keys(kjc)
    sleep(2)
if __name__ == '__main__':
    kj("kw","hz")
    kj("kw", Keys.CONTROL,"a")
    kj("kw", Keys.CONTROL, "x")
    kj("kw", Keys.CONTROL, "v")
    kj("kw", Keys.ENTER)

posted @ 2024-08-14 09:04  藕丝鲜芋  阅读(294)  评论(0)    收藏  举报