web自动化中的文件上传和iframe处理

一、文件上传

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值