首页 > 其他分享 >Selenium4 上传文件,弹出对话框(非input框)

Selenium4 上传文件,弹出对话框(非input框)

时间:2023-10-23 17:45:34浏览次数:32  
标签:pyautogui 对话框 shift enter Selenium4 time press input 上传

场景: 点击一个按钮,然后弹出对话框,从本地选择需要上传的文件,自动关闭对话框。 最后在点击web页面的ok按钮 提交上传文件。

ps:因为这里是按钮上传,所以用input框的sendkeys方法是无法上传成功的了。

下面是点击按钮上传成功的案例,需要注意的是,上传时,还需要了解各个按键是什么text来表示的。我们使用的是 PyAutoGUI模块来实现的。

       self.icon_upload_image = (By.CSS_SELECTOR, ".icon-upload")#上传文件按钮
       self.btn_ok = (By.CSS_SELECTOR,".btn-lg:nth-child(2)")# OK button

print("Click 'upload btn' ") driver.find_element(*self.icon_upload_image).click() time.sleep(3)
#此时 已经弹出了上传文件得对话框,请从本地选择要上传的文件 print("Upload file path:%s" %file_path) pyautogui.write(file_path) #输入文件地址,E:\resource\pic\test.png time.sleep(2) pyautogui.press('enter', 1) # Click enter key 1 次,模糊查询 time.sleep(2) pyautogui.press('down', 1) # Click 向下箭头 key 1 次,搜索 time.sleep(2) pyautogui.press('enter', 1) # Click enter key 1 time,关闭弹框 time.sleep(2) print("Click the first 'ok' button") driver.find_element(*self.btn_ok).click()

  

自动化手工操作工具PyAutoGUI :键盘操作

pyautogui.typewrite('Hello world!') # 输入Hello world!字符串
pyautogui.typewrite('Hello world!', interval=0.25) 
# 每次输入间隔0.25秒,输入Hello world!

  

pyautogui.press('enter') # 按下并松开(轻敲)回车键
pyautogui.press(['left', 'left', 'left', 'left']) # 按下并松开(轻敲)四下左方向键
pyautogui.keyDown('shift') # 按下`shift`键
pyautogui.keyUp('shift') # 松开`shift`键
pyautogui.keyDown('shift')
pyautogui.press('4')
pyautogui.keyUp('shift') # 输出 $ 符号的按键
pyautogui.hotkey('ctrl', 'v') 

 键盘的关键字列表:

键盘键字符串                        含义
'a','b','c','A','C','1','2','3',    单个字符的键
'!','@','#'等
'enter'                             回车
‘esc'                              ESC键
'shiftleft','shiftright'            左右Shift键
'altleft','altright'                左右Alt键
'ctrlleft','ctrlright'              左右Ctrl键
‘tab'(or '\t')                     Tab键
'backspace','delete'                Backspace键和Delete键
'pageup','pagedown'                 Page Up 和Page Down键
'home','end'                        Home键和End键
'up','down','left','right'          上下左右箭头键
'f1','f2','f3'等                    F1至F12键
'volumemute','volumeup',volumedown' 静音,放大音量和减小音量键
'pause'                             暂停键
'capslock','numlock','scrolllock'   Caps Lock,Num Lock和 Scroll Lock键
'insert'                            Insert键
'printscreen'                       Prtsc或Print Screen键
'winleft','winright'                左右Win键(在windows上)
'command'                           Command键(在OS X上)
'option'                            Option键(在OS X上)

 

标签:pyautogui,对话框,shift,enter,Selenium4,time,press,input,上传
From: https://www.cnblogs.com/pingguomang/p/17783063.html

相关文章

  • vue2 el-input-number 千分位显示的支持(不影响v-model的数值取值)
    <!--增加v-thousands指令--><el-input-numberv-model="row.money"v-thousands:controls="false":min="0":precision="2"style="width:100%"//添加全局指令或局部指令directives:......
  • Java基础 FileInputStream 字节输入流的细节
    1.创建字节输入流对象:FileInputStreamfis=newFileInputStream("E:\\Java基础资料\\a.txt");细节:如果文件不存在,就直接报错 2.读取数据(read方法负责读取数据,会一个一个地读,如果读不到了,就会返回-1)细节①:一次读取一个字节,读出来的是数据在ASCII码表上对应的数字细节......
  • 选择文件对话框
    ///<summary>///选择文件对话框///</summary>///<paramname="filter">"图像(*.jpg;*.png;*.gif;*.bmp)|*.jpg;*.png;*.gif;*.bmp"</param>///<paramname="useLastPath"></param>///<paramname=&qu......
  • Vivado生成bitstream时报错[Opt 31-67] Problem: A LUT3 cell in the design is missi
    这个原因主要是因为有一个引脚没有用到,解决方法。1、打开Schematic。2、根据提示的模块去找,比如说我的报错。[Opt31-67]Problem:ALUT3cellinthedesignismissingaconnectiononinputpinI1,whichisusedbytheLUTequation.Thispinhaseitherbeenleftun......
  • 谈谈selenium4.0中的相对定位
    相对定位历史2021-10-13发布的selenium4.0开始引入,selenium3.X是没有的implementrelativelocatorforfind_element(#9902)4.10维护了下Improvenearrelativelocatorbehavior(#11290)其他都是文档、异常信息方面的处理实例演示D:\selenium\demo\relative......
  • iview2.0 InputNumber 保留两位小数
    <FormItemprop="free"label="包期费用(元):"><Input-number:min="0"style="width:100%"v-model="formValidate.free"placeholder="请输入单价(元)&......
  • 为ModelForm自动生成的input框添加BootStrap样式
    为了方便管理,我们在/app01/utils下新建bootstrap.pyfromdjangoimportformsclassBootStrapModelForm(forms.ModelForm):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)#循环找到所有的插件,添加class="form-control"样......
  • vue中的for循环中,获取input输入框中的值的方法
    1<pv-for="iteminlist":key="item.id">2{{item.topic}}=3<!--<inputtype="text"v-model="item.id"placeholder="请输入答案">-->4......
  • Go - Generating Random Test Inputs for Tests
    Problem: Youwanttogeneraterandomtestdataforrunningyourtestfunctions. Solution: Usefuzzing,whichisanautomatedtestingtechniquetogeneraterandomtestdataforyourtestfunctions. Fuzzing,orfuzztesting,isanautomatedtestingte......
  • input 选择历史值后,输入框变为白背景色
    1input:-webkit-autofill{2-webkit-animation:autofill-fix1sinfinite!important;3-webkit-text-fill-color:#666;4-webkit-transition:background-color50000sease-in-out0s!important;5-webkit-box-shadow:0001000pxtransparen......