主题:解决selenium UI自动测试过程中遇到弹窗元素定位不到的问题
前言:我们在做UI自动化测试的时候经常会遇到要定位的弹窗页面元素,直接通过xpath、css等方法无法定位到元素,或者提示元素无法操作。
这是为什么呢?原因是前端同学在开发的时候通常是借助一些前端框架进行开发,这样既有效率又美观整洁;
笔者所在公司前端开发用的是vue框架涉及的语言包括:html、js、css;
笔者发现前端页面在涉及到js语言开发的弹窗,元素定位普通方法基本失败;
经过多次尝试,终于找到解决方案;
正文:
先贴代码
#选择短信所属
print("选择短信所属")
from selenium.webdriver.common.action_chainsimport ActionChains
# 给元素加上红色边框,0.3秒后还原
def highlightElement(element):
driver.execute_script("arguments[0].setAttribute('style',arguments[1]);", element,
"border:2px solid red;")
time.sleep(0.3)
driver.execute_script("arguments[0].setAttribute('style',arguments[1]);", element,
"")
shelf_form = driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[1]/ul/li[1]')
shelf = driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[1]/ul/li[1]')
highlightElement(shelf_form)
# 鼠标先移动到人工货架框上,然后点击人工货架
ActionChains(driver).move_to_element(shelf_form).click(shelf).perform()
简要说明:
execute_script(scrip,args)
---同步执行JS代码
---script:被执行的JS代码
---args:js代码中的任意参数
主要思路是通过调用js 实现元素定位