selenium 获取按钮的笔记
测试odoo时,发现大部分按钮都是动态生成,id也是动态的,
只能用xpath,但是配置一旦改变导致按钮位置改变
想到一个办法,遍历所有按钮,然后内容相符的才点击,测试代码如下
1 2 3 4 | submit_loc = (By.XPATH, "/html/body/div/div/form/div[3]/button" ) self .find_element( * self .submit_loc).click() login_value = self .find_element( * self .submit_loc).get_attribute( "textContent" ) print (login_value) |
最后整理到基类里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def click_button_byText( self , text): try : # WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(loc)) # time.sleep(1) # return self.driver.find_elements(*loc) elements = self .find_elements( 'tag name' , 'button' ) # print(type(submits)) for i in elements: # print(type(i)) print (i.get_attribute( "textContent" )) if i.get_attribute( "textContent" ).find(text)> = 0 : i.click() break except AttributeError: print (u "%s 页面中未能找到 %s 元素" % ( self , text)) |
标签:
selenium
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)