selenium+python自动化测试--隐藏元素
最近工作中遇到了关于隐藏元素如何定位与点击的问题,下面就总结下解决过程。
场景:在输入框中输入搜索条件(admin),下面出现相应的搜索结果,选择搜索结果。搜索结果区在未搜索前和选择结果后为隐藏状态。
1、思路分析:
(1)点击编辑按钮(出现普通弹框)
(2)输入搜索条件
(3)选择搜索结果
(4)点击确定按钮进行保存
2、初步代码编写
文件名称:architectureCard.py
from selenium import webdriver
import time
base_url="url地址"
driver = webdriver.Firefox()
driver.get(base_url+"/6403/card")
driver.maximize_window()
#点击编辑按钮
driver.find_element_by_css_selector(".sc-ebFjAB.jLsEQY.sc-rBLzX.crxYrd").click()
#输入搜索条件
driver.find_elements_by_tag_name("input")[6].send_keys("admin")
time.sleep(2)
#选择搜索值
js = 'document.getElementsByClassName("bp3-menu-item bp3-popover-dismiss")[1].click()'
driver.execute_script(js)
time.sleep(2)
#点击确定
driver.find_element_by_css_selector(".bp3-button.bp3-intent-primary.sc-cLQEGU.hOClYU").click()
time.sleep(3)
driver.quit()
3、代码优化,页面封装与调试
文件名称:architectureCard.py
from selenium import webdriver
from common.base import Base
import time
base_url = "url地址"
class EditArch(Base):
#编辑架构卡按钮
editarch = ("css selector",".sc-ebFjAB.jLsEQY.sc-rBLzX.crxYrd")
#责任人输入框,取输入框第七个
person = ("tag name","input")
#确定按钮
submit = ("css selector",".bp3-button.bp3-intent-primary.sc-cLQEGU.hOClYU")
def editArch(self):
#点击编辑按钮
self.click(self.editarch)
#输入搜索条件
aa=self.finds(self.person)
aa[6].send_keys("admin")
time.sleep(2)
#选择搜索结果
js = 'document.getElementsByClassName("bp3-menu-item bp3-popover-dismiss")[1].click()'
self.driver.execute_script(js)
#点击确定按钮
self.click(self.submit)
if __name__ == '__main__':
driver = webdriver.Firefox()
driver.get(base_url+"/6403/card")
driver.maximize_window()
time.sleep(2)
editA = EditArch(driver)
editA.editArch()
time.sleep(2)
driver.quit()
通过上图和代码可以发现,隐藏元素(搜索结果)可以定位到,但是在选中(点击)搜索结果时,却没有使用普通定位加click的方法,是因为click在点击隐藏元素的时候很难点击到,用js方法即可解决隐藏元素点击问题。
4、代码运行结果
最近工作中遇到了关于隐藏元素如何定位与点击的问题,下面就总结下解决过程。
场景:在输入框中输入搜索条件(admin),下面出现相应的搜索结果,选择搜索结果。搜索结果区在未搜索前和选择结果后为隐藏状态。
1、思路分析:
(1)点击编辑按钮(出现普通弹框)
(2)输入搜索条件
(3)选择搜索结果
(4)点击确定按钮进行保存
2、初步代码编写
文件名称:architectureCard.py
from selenium import webdriver
import time
base_url="url地址"
driver = webdriver.Firefox()
driver.get(base_url+"/6403/card")
driver.maximize_window()
#点击编辑按钮
driver.find_element_by_css_selector(".sc-ebFjAB.jLsEQY.sc-rBLzX.crxYrd").click()
#输入搜索条件
driver.find_elements_by_tag_name("input")[6].send_keys("admin")
time.sleep(2)
#选择搜索值
js = 'document.getElementsByClassName("bp3-menu-item bp3-popover-dismiss")[1].click()'
driver.execute_script(js)
time.sleep(2)
#点击确定
driver.find_element_by_css_selector(".bp3-button.bp3-intent-primary.sc-cLQEGU.hOClYU").click()
time.sleep(3)
driver.quit()
3、代码优化,页面封装与调试
文件名称:architectureCard.py
from selenium import webdriver
from common.base import Base
import time
base_url = "url地址"
class EditArch(Base):
#编辑架构卡按钮
editarch = ("css selector",".sc-ebFjAB.jLsEQY.sc-rBLzX.crxYrd")
#责任人输入框,取输入框第七个
person = ("tag name","input")
#确定按钮
submit = ("css selector",".bp3-button.bp3-intent-primary.sc-cLQEGU.hOClYU")
def editArch(self):
#点击编辑按钮
self.click(self.editarch)
#输入搜索条件
aa=self.finds(self.person)
aa[6].send_keys("admin")
time.sleep(2)
#选择搜索结果
js = 'document.getElementsByClassName("bp3-menu-item bp3-popover-dismiss")[1].click()'
self.driver.execute_script(js)
#点击确定按钮
self.click(self.submit)
if __name__ == '__main__':
driver = webdriver.Firefox()
driver.get(base_url+"/6403/card")
driver.maximize_window()
time.sleep(2)
editA = EditArch(driver)
editA.editArch()
time.sleep(2)
driver.quit()
通过上图和代码可以发现,隐藏元素(搜索结果)可以定位到,但是在选中(点击)搜索结果时,却没有使用普通定位加click的方法,是因为click在点击隐藏元素的时候很难点击到,用js方法即可解决隐藏元素点击问题。
4、代码运行结果