标签:定位 脚本 scroll pass get NPU des 时间 contain
重新学习selenium的各种元素定位。昨天就和上传文件杠上了。
拿来练手的是163邮箱,结果发现添加附件按钮死活定位不到。—— 花了一天时间,用chrome自带的控制台查看元素,xpath、css、fullxpath都试过不行,
包括下载插件katalon recorder 录制的脚本不行,又下载BlazeMeter,录制的脚本还是不行。
—— 到最后,才发现这个元素是动态属性,它的爸爸,爸爸的爸爸,爸爸的爸爸的爸爸……也都是动态属性的,往上追了很多代才找到一个固定属性的id,
还是用xpath定位的。
把代码贴出来,供大家参考。
e2=‘//*[@id="_dvModuleContainer_compose.ComposeModule_0"]/div[1]/section/header/div[3]/div[1]/div[2]/input‘
driver.find_element_by_xpath(e2).send_keys(r‘C:\Users\stonmy\Desktop\UI\fla.jpg‘) #点击添加附件 并上传图片
ps:元素定位不到的情况,首先想要用多种方式来尝试定位--查看是否有iframe、是否有动态属性的原色--借助插件录制脚本。
遇到类似场景:一定要一层一层往上追踪,不要嫌麻烦。
如果你有更好的方法,也请分享一下。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(‘https://mail.163.com/‘)
driver.maximize_window()
driver.implicitly_wait(10)
driver.find_element_by_id(‘lbNormal‘).click()
driver.implicitly_wait(10)
driver.switch_to.frame(driver.find_element_by_xpath(‘//*[@id="loginDiv"]/iframe‘))
driver.implicitly_wait(10)
driver.find_element_by_name(‘email‘).send_keys(‘13923830417‘)
driver.find_element_by_name(‘password‘).send_keys(‘mima‘) #输入正确的密码
driver.find_element_by_id(‘dologin‘).click()
driver.implicitly_wait(50)
h = driver.current_window_handle
driver.switch_to.window(h)
driver.implicitly_wait(40)
driver.find_element_by_id(‘_mail_component_19_19‘).click() #点击首页的写信按钮
driver.implicitly_wait(50)
h1 = driver.current_window_handle
driver.switch_to.window(h1)
driver.implicitly_wait(40)
# 输入对方邮箱地址和邮件内容
driver.find_element_by_class_name(‘nui-editableAddr-ipt‘).send_keys(‘120221363@qq.com‘) #输入收件人
driver.implicitly_wait(40)
e1=‘//*[@id="_dvModuleContainer_compose.ComposeModule_0"]/div[1]/section/header/div[2]/div[1]/div/div/input‘
driver.find_element_by_xpath(e1).send_keys(‘春天来了‘) #输入主题
driver.switch_to.frame(driver.find_element_by_class_name(‘APP-editor-iframe‘))
driver.find_element_by_class_name(‘nui-scroll‘).send_keys(‘石头记,一部经典著作。值得看了一遍又一遍!‘)
driver.switch_to.default_content() #退出富文本的iframe
driver.implicitly_wait(50)
e2=‘//*[@id="_dvModuleContainer_compose.ComposeModule_0"]/div[1]/section/header/div[3]/div[1]/div[2]/input‘
driver.find_element_by_xpath(e2).send_keys(r‘C:\Users\stonmy\Desktop\UI\fla.jpg‘) #点击添加附件 并上传图片
driver.find_element_by_class_name(‘nui-toolbar-item‘).click() #点击发送按钮
driver.implicitly_wait(20)
# driver.find_element_by_id(‘_mail_button_10_229‘).click() #不输入主题时的弹窗确认
time.sleep(3)
driver.quit()
标签:定位 脚本 scroll pass get NPU des 时间 contain
原文地址:https://www.cnblogs.com/stonmy2008/p/12530056.html