Selenium中find_element_by_xpath已移除,如何兼容原xpath变量定义?
解决方案
不用重构所有脚本,只需要修改你定义xpath变量的代码,把它替换成包装新API的lambda函数或自定义函数即可:
方法1:使用Lambda函数(最简洁)
将原来的:
xpath = driver.find_element_by_xpath
替换为:
xpath = lambda locator: driver.find_element("xpath", locator)
方法2:使用自定义函数(可读性更强)
如果觉得lambda不够直观,也可以写一个普通函数:
def xpath(locator): return driver.find_element("xpath", locator)
效果说明
修改后,所有脚本中类似xpath("""//*[@id="#ICClear"]""").click()、xpath("""//input[@name="username"]""").send_keys("admin")的调用都可以完全保持不变。新的xpath对象(lambda或函数)接收定位表达式参数后,会自动适配Selenium新的find_element调用格式,返回的WebElement对象和之前完全一致,所有元素方法(click()、send_keys()等)都能正常使用。
扩展提示
如果你的脚本中还有其他类似的简写(比如css = driver.find_element_by_css_selector),也可以用同样的方式适配新API:
# CSS选择器的适配 css = lambda locator: driver.find_element("css selector", locator)
内容的提问来源于stack exchange,提问作者RoccoMaxamas
相关产品推荐
相关产品推荐

