Selenium XPath定位报错:DevTools可查元素但返回TypeError
问题解决与功能说明
先修复你的错误
你碰到的TypeError: 'str' object is not callable错误,核心是方法调用或语法问题:
- 若用Python版Selenium,正确方法名是小写的
find_elements,且By.XPATH参数顺序要注意,写法如下:driver.find_elements(By.XPATH, "//div[@id='library-list']//div[@class='piece ui-draggable ui-draggable-handle']") - 若用C#版Selenium,确认已正确引用
OpenQA.Selenium命名空间,driver实例初始化正常,正确写法:driver.FindElements(By.XPath("//div[@id='library-list']//div[@class='piece ui-draggable ui-draggable-handle']"))
Selenium中类似Puppeteer $x的功能
Selenium有两种方式实现和DevTools/Puppeteer中$x一致的效果:
- 原生XPath定位方法
就是上面修复后的find_elements(By.XPATH, 表达式)(Python)或FindElements(By.XPath(表达式))(C#),本质和$x一样是通过XPath查询元素列表。 - 执行JS调用浏览器原生$x
可以直接在Selenium中调用浏览器的$x函数,返回元素列表,比如Python代码:
这种方式和你在DevTools控制台输入elements = driver.execute_script("return $x('//div[@id=\"library-list\"]//div[@class=\"piece ui-draggable ui-draggable-handle\"]')")$x的效果完全相同,返回的元素会被Selenium包装成WebElement实例。
内容的提问来源于stack exchange,提问作者carljong2003ctkctk
相关产品推荐
相关产品推荐

