此文章来源于项目官方大众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或许非法用处
一、前言
在上期更新推文中说到,咱们Airtest-Selenium更新到了1.0.6版别,新增支撑Selenium4.0的语法,那么咱们来看一下Airtest-Selenium更新后有什么新的内容吧~
二、selenium 4.0有什么新功能
selenium4.0最主要的仍是定位元素办法的更新,与旧版别的selenium代码写法存在一些差异,变得更简洁明了。
1. 定位单个元素办法的更新
首先咱们来看一下定位元素办法的更新,AirtestIDE一起兼容新旧两种写法,将find_element_by_xpath()的办法更新为find_element(),现在运用AirtestIDE的Selenium窗口录制脚本输出的依然为旧写法。可是咱们是能够兼容运行新写法的~
更新前写法(Selenium3):
driver.find_element_by_class_name("className")
driver.find_element_by_css_selector(".className")
driver.find_element_by_id("elementId")
driver.find_element_by_link_text("linkText")
driver.find_element_by_name("elementName")
driver.find_element_by_partial_link_text("partialText")
driver.find_element_by_tag_name("elementTagName")
driver.find_element_by_xpath("xpath")
更新后写法(Selenium4):
#留意运用新写法的时分要引证selenium的By库
fromselenium.webdriver.common.byimportBy
driver.find_element(By.CLASS_NAME,"xx")
driver.find_element(By.CSS_SELECTOR,"xx")
driver.find_element(By.ID,"xx")
driver.find_element(By.LINK_TEXT,"xx")
driver.find_element(By.NAME,"xx")
driver.find_element(By.PARTIAL_LINK_TEXT,"xx")
driver.find_element(By.TAG_NAME,"xx")
driver.find_element(By.XPATH,"xx")
2. 定位多个元素办法的更新
与上述定位元素一样,定位多个元素办法的更新将find_elements_by_xpath()的办法换成了find_elements(),下面是一些写法的改变:
更新前写法(Selenium3):
driver.find_elements_by_class_name("className")
driver.find_elements_by_css_selector(".className")
driver.find_elements_by_id("elementId")
driver.find_elements_by_link_text("linkText")
driver.find_elements_by_name("elementName")
driver.find_elements_by_partial_link_text("partialText")
driver.find_elements_by_tag_name("elementTagName")
driver.find_elements_by_xpath("xpath")
更新后写法(Selenium4):
#留意运用新写法的时分要引证selenium的By库
fromselenium.webdriver.common.byimportBy
driver.find_elements(By.CLASS_NAME,"xx")
driver.find_elements(By.CSS_SELECTOR,"xx")
driver.find_elements(By.ID,"xx")
driver.find_elements(By.LINK_TEXT,"xx")
driver.find_elements(By.NAME,"xx")
driver.find_elements(By.PARTIAL_LINK_TEXT,"xx")
driver.find_elements(By.TAG_NAME,"xx")
driver.find_elements(By.XPATH,"xx")
3. Selenium 4新增了相对定位
selenium更新到4.0以上的版别后,新增了一个对元素相对定位的支撑,他能根据某些原点元素作为参阅去定位该元素邻近的其他元素,现在可用的相对定位有:
-
above 元素的上方
-
below 元素的下方
-
toLeftOf 元素的左方
-
toRightOf 元素的右方
-
near 元素的邻近
#假如有九宫格button元素别离排布着1-9,如计算器排布办法 text5 = driver.find_element(By.NAME,"5")#以数字5为原点元素的基准 #在数字5的上面是数字8 text8 = driver.find_element(locate_with(By.TAG_NAME,"button").above(text5)) #在数字5的下面是数字2 text2 = driver.find_element(locate_with(By.TAG_NAME,"button").below(text5)) #在数字5的左面是数字4 text4 = driver.find_element(locate_with(By.TAG_NAME,"button").to_left_of(text5)) #在数字5的右面是数字6 text6 = driver.find_element(locate_with(By.TAG_NAME,"button").to_right_of(text5)) #默认寻觅数字5邻近含有该TAG_NAME且离数字5最近的元素 Near = driver.find_element(locate_with(By.TAG_NAME,"button").near(text5))
三、在 AirtestIDE 上跑 selenium4.0 的新办法
1. 以定位单个元素办法的更新为例
能够看到,咱们这边能够混合运用两种写法的,都能够正常辨认并进行正常的操作的,具体参阅代码如下:
# -*- encoding=utf8 -*-
__author__ ="AirtestProject"
fromairtest.core.apiimport*
fromseleniumimportwebdriver
fromselenium.webdriver.common.keysimportKeys
fromairtest_selenium.proxyimportWebChrome
fromselenium.webdriver.common.byimportBy
driver = WebChrome()
driver.implicitly_wait(20)
#翻开百度网站
driver.get("https://www.baidu.com")
sleep(2.0)
#在查找框中查找2024两会
searchbox = driver.find_element(By.ID,"kw")
searchbox.send_keys("2024两会")
searchbox.submit()
driver.switch_to_new_tab()
#点击进入其中一个直播回放画面
driver.find_element(By.XPATH,"//*[@id="2"]/div/div/div/div[3]/div/div/div[4]/a/button/span").click()
driver.switch_to_new_tab()
sleep(3.0)
#辨认视频的简述内容
el=driver.find_element(By.CLASS_NAME,"title-desc").text
print(el)
2. 以元素相对定位办法的更新为例
**留意:**假如运用AirtestIDE原生环境跑测的同学们可能会发现出现了这个报错信息:No module named 'selenium.webdriver.support.relative_locator',这个是AirtestIDE环境下的兼容性问题,现在咱们已经在排期兼容了,后续有新的兼容信息会通知咱们!
虽然AirtestIDE的原生环境会有一定兼容性的报错,可是能够经过替换python路径为本地的python环境就能够运用新的相对定位的办法啦~(PS:前提是本地的python环境下的selenium以及Airtest-Selenium的版别皆为现在最新版别)
具体替换AirtestIDE的环境为本地python环境的具体办法,能够点击检查咱们的教程文档:airtest.doc.io.netease.com/IDEdocs/3.4…
下面咱们使用一个小小的比如,来看一下相对定位的完结状况吧。
能够看到能够经过一个已知的原点元素以及方针元素的地点方位能够经过相对定位去直接寻觅,在日常编写脚本的时分能够更便利快捷。
参阅代码如下:
# -*- encoding=utf8 -*-
__author__ ="AirtestProject"
fromairtest.core.apiimport*
fromseleniumimportwebdriver
fromselenium.webdriver.common.keysimportKeys
fromairtest_selenium.proxyimportWebChrome
driver = WebChrome()
driver.implicitly_wait(20)
fromselenium.webdriver.common.byimportBy
fromselenium.webdriver.support.relative_locatorimportlocate_with
#翻开计算机网站
driver.get("http://www.0756jia.com/")
sleep(2.0)
#以数字5为相对定位的原点
text5 = driver.find_element(By.ID,"simple5")
#在数字5上方是数字8
text8 = driver.find_element(locate_with(By.TAG_NAME,"A").above(text5))
text8.click()
#在数字5下方是数字2
text2 = driver.find_element(locate_with(By.TAG_NAME,"A").below(text5))
text2.click()
#在数字5左方是数字4
text4 = driver.find_element(locate_with(By.TAG_NAME,"A").to_left_of(text5))
text4.click()
#在数字5右方是数字6
text6 = driver.find_element(locate_with(By.TAG_NAME,"A").to_right_of(text5))
text6.click()
#在数字5旁边是数字8
Near = driver.find_element(locate_with(By.TAG_NAME,"A").near(text5))
Near.click()
3.小结与留意事项
3.1 AirtestIDE更新了Airtest-Selenium,支撑了Selenium 4.0的新定位语法
AirtestIDE更新了Airtest-Selenium到1.0.6版别,支撑了Selenium4.0的新定位语法,包括了单个以及多个元素的定位语法,将find_element_by_xpath()的办法换成了find_element()。
3.2 在本地python环境中,更新airtest-selenium、selenium,能够支撑4.0新功能
虽然在AirtestIDE的原生环境中,暂时不支撑进行该相对定位办法,可是能够在本地的python环境中,将Airtest-Selenium、Selenium4到更新到最新版别后,可运用新增的元素的相对定位办法。
在更新Airtest-Selenium的时分,别忘了将自己环境下的selenium更到4.0以上的版别
#更新airtest-selenium
pip install -U airtest-selenium
#更新selenium
pip install -U selenium
3.3 chrome与chromedriver对应问题
咱们想用新版别的chrome浏览器进行自动化测验很久了,咱们兼容了现在新版别的chrome浏览器,可是要留意的是要将AirtestIDE环境下以及本地环境下的chromedriver替换成与自己chrome版别对应的才能够噢!
旧版chromedriver下载地址:chromedriver.storage.googleapis.com/index.html
新版chromedriver下载地址:googlechromelabs.github.io/chrome-for-…
3.4小结
现在Airtest-Selenium的1.0.6版别兼容了selenium4.0的语法,咱们能够更简单快捷的完结咱们想要的自动化测验效果,能够更好的联动浏览器去完结更多的内容。一起咱们也欢迎咱们给咱们投稿你们想要完结的selenium实操比如,也非常欢迎热心同学给咱们投稿自己完结的脚本比如~
如同学们在运用新版的Airtest-Selenium时遇到了一些问题无法处理,能够经过此网站向咱们的开发者快速提单:airtest.netease.com/issue_creat…
能够在标题中参加“Airtest-Selenium1.0.6”之类的字眼。便利咱们快速挑选和排查。
AirtestIDE下载:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
建立企业私有云服务:airlab.163.com/b2b
官方答疑 Q 群:526033840




