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) #点击打开按钮

 

posted @ 2020-03-22 15:36  潇潇灬  阅读(405)  评论(0编辑  收藏  举报