一、文件上传
1、例如修改头像这种操作,点击完修改之后,会进入操作系统的页面,选择目标文件,然后点击打开,才会回到网站,进入操作系统这个步骤,我们可以通过上传文件路径来代替
def upload_header():
driver.find_element(By.XPATH, "//A[text()='进入个人中心']").click()
wait = WebDriverWait(driver=driver, timeout=5, poll_frequency=0.5)
wait.until(click_success((By.PARTIAL_LINK_TEXT, "个人信息")))
# wait.until(expected_conditions.presence_of_element_located((By.XPATH, '(//input[@class="el-input__inner"])[2]')))
driver.find_element(By.XPATH,'//input[@type="file"]').send_keys(r"C:\Users\Asher Hua\Desktop\微信图片_20240714174957.jpg")
driver.find_element(By.XPATH,'//span[text()="确 定"]/..').click()
wait = WebDriverWait(driver=driver,timeout=5)
flag = wait.until(page_contains("上传成功,保存后生效"))
assert flag
driver.find_element(By.XPATH,'//span[text()="保存资料"]/..').click()
wait = WebDriverWait(driver=driver,timeout=5)
flag = wait.until(page_contains("修改成功"))
assert flag
二、iframe处理
由于目标元素不在一个iframe标签中,因此我们需要完成iframe切换,再去定位元素信息,有三种切换方式
1、iframe切换
把iframe当作一个普通元素进行定位,然后再把driver切换到这个iframe标签上
iframe = driver.find_element(By.XPATH,'//iframe[@frameborder=0]')
driver.switch_to.frame(iframe)
按照iframe标签的name或者id的属性值进行切换,如果这两个值是动态变化的就不能用这种方式了
driver.switch_to.frame('name或者id属性值')
按照iframe标签的索引进行切换
driver.switch_to.frame(0)
2、切换回原来的iframe标签
把iframe切到默认的ifream中
driver.switch_to.default_content() #把driver切回默认的html中
在多级iframe嵌套中,如果要返回上一级
driver.switch_to.parent_frame()