web自动化的高级操作

1、下拉列表

  # 导入select模块

  from selenium.webdriver.support.select import Select
  # 获取指定元素
  select_loc = (By.XPATH, '//select[@name="ft"]' )
  # 等待指定元素出现
  WebDriverWait(driver, 20 ).until(EC.visibility_of_element_located(select_loc))
  #获取下拉元素
  ele = driver.find_element( * select_loc)
  # 创建select对象
  s = Select(ele)
   # 下标方式选元素
  s.select_by_index( 3 )
  # value属性选元素
  s.select_by_value( "all" )
  # 文本内容选元素
  s.select_by_visible_text( "Adobe Acrobat PDF (.pdf)" )
2、Enter按键操作
  # 导入按键模块
   from selenium.webdriver.common.keys import Keys
  # 操作按键
   driver.find_element_by_id( "kw" ).send_keys( "潇潇" ,Keys.ENTER)
3、js操作日期框
  # 修改js的值
  js_pha = """
  var a = document.getElementById("train_date");
  a.readOnly = false;
  a.value = "2019-10-10";
  """
  # 执行js语句
  driver.execute_script(js_pha)
4、js操作滚动条
  
  # 移动到元素element对象的“底端”与当前窗口的“底部”对齐
   driver.execute_script("arguments[0].scrollIntoView(false);",element)
  # 移动到元素element对象的“顶端”与当前窗口的“顶部”对齐  
   driver.execute_script("arguments[0].scrollIntoView();",element)
  移动到页面底部
  driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
  移动到页面顶部:
   driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")
  # 找到我要滚动到可见区域的元素
  loc = (By.XPATH, '//a[text()="-软件测试论坛-测试人才交流社区"]' )
  WebDriverWait(driver, 20 ).until(EC.visibility_of_element_located(loc))
  element = driver.find_element( * loc)
  # 执行js的函数
  # 因顶部有遮罩层,所以与可见区域的底部对齐。
  driver.execute_script("arguments[0].scrollIntoView(false);",element)
5、窗口切换
  # 获取元素
  loc = ( By.XPATH, '')
  # 获取当前窗口数量
   cur_handles = driver.window_handles
  # 操作元素导致出现新的窗口
   driver.find_element( * loc).click()
  # 等待新的窗口出现
   WebDriverWait(driver, 20 ).until(EC.new_window_is_opened(cur_handles))
  # 获取当前所有窗口
   wins = driver.window_handles
       # 切换窗口
   driver.switch_to.window(wins[ - 1 ])

6、iframe切换

  # 等待iframe出现并切换窗口

  WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//iframe[@name="login_frame_qq"]')))

7、alert弹窗处理

  # 做一个操作,导致alert框出现

  driver.find_element_by_id( "press_me" ).click()
  # 等待alert出现并直接切换到alert弹窗
   alert = WebDriverWait(driver, 10 ).until(EC.alert_is_present())
   # 点击确定,关闭弹框
  alert.accept()
8、上传操作
       # 导入win32库
   import win32gui
  import win32con
   # 前提 :windows上传窗口已经出现。sleep1-2秒等待弹出的出现。
    def upload(filePath,browser_type = "chrome" ):
       if browser_type = = "chrome" :
           title = "打开"
       else :
           title = ""
 
     #找元素
     #一级窗口"#32770","打开"
     dialog = win32gui.FindWindow( "#32770" ,title)
     #
     ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0 , "ComboBoxEx32" , None #二级
     comboBox = win32gui.FindWindowEx(ComboBoxEx32, 0 , "ComboBox" , None )   #三级
     #编辑按钮
     edit = win32gui.FindWindowEx(comboBox, 0 , 'Edit' , None )    #四级
     #打开按钮
     button = win32gui.FindWindowEx(dialog, 0 , 'Button' , "打开(&O)" )   #二级
 
 
     #往编辑当中,输入文件路径 。
     win32gui.SendMessage(edit,win32con.WM_SETTEXT, None ,filePath)    #发送文件路径
     win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1 , button)    #点击打开按钮

猜你喜欢

转载自www.cnblogs.com/xiaoxiaozhaoxin/p/12546258.html