Angular10项目Selenium UI测试报TypeError: 'str' object not callable错误
问题根源
报错是find_element方法传参格式错误导致的:By.XPATH是Selenium预定义的字符串常量,不是可调用的函数,你写的By.XPATH(Tags.starSysButton)相当于尝试把字符串对象作为函数调用,自然抛出TypeError: 'str' object not callable错误。
修复方案
find_element需要接收两个独立参数,第一个为定位方式常量,第二个为定位路径字符串,修改对应两行代码即可:
# 原错误写法 starElement = browser.find_element(By.XPATH(Tags.starSysButton)) # 修正后写法 starElement = browser.find_element(By.XPATH, Tags.starSysButton) # 原错误写法 results = browser.find_element(By.XPATH(Tags.solPath)) # 修正后写法 results = browser.find_element(By.XPATH, Tags.solPath)
额外优化建议
- 点击按钮后表格是Angular异步渲染生成的,隐式等待无法完全覆盖异步加载场景,建议搭配显式等待判断元素加载完成,避免后续偶发找不到元素的问题:
starElement.click() # 最多等待10秒直到目标元素加载完成 results = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, Tags.solPath)) )
- 原代码末尾的
if results: assert results逻辑冗余,find_element只要执行成功没有抛出异常,就说明元素已成功定位,不需要额外判断。
内容的提问来源于stack exchange,提问作者user14060881
相关产品推荐
相关产品推荐

