如何在Python中为ChromeDriver编写RobotFramework关键字获取当前页面URL
完善RobotFramework关键字方案
一、实现获取当前页面URL的关键字
要从ChromeDriver获取当前页面URL,直接调用WebDriver的current_url属性即可,无需依赖lxml。以下是完整的关键字实现:
from robot.api.deco import keyword from selenium import webdriver @keyword("Get Current Page URL") def get_current_page_url(): # 获取当前ChromeDriver实例 driver = webdriver.Chrome() # 若测试用例通过RobotFramework的SeleniumLibrary管理会话,推荐用下方方式获取driver: # from SeleniumLibrary import SeleniumLibrary # lib = SeleniumLibrary() # driver = lib.driver return driver.current_url
在RF测试用例中直接调用Get Current Page URL关键字,就能返回ChromeDriver当前打开页面的URL。
二、完善你提供的Count_Element_In_WebPage关键字
你的原代码试图用lxml直接解析页面,但登录页面需要依赖ChromeDriver的会话状态,因此要先通过ChromeDriver获取页面源码,再传入lxml解析。修改后的代码如下:
from robot.api.deco import keyword from selenium import webdriver from lxml import html @keyword("Count Element In WebPage") def count_element_in_webpage(searched_text): # 获取当前ChromeDriver实例 driver = webdriver.Chrome() # 若用SeleniumLibrary管理会话,优先用以下方式获取driver: # from SeleniumLibrary import SeleniumLibrary # lib = SeleniumLibrary() # driver = lib.driver # 通过ChromeDriver获取登录后的页面源码 page_source = driver.page_source tree = html.fromstring(page_source) # 这里编写你的元素统计逻辑,示例为统计包含指定文本的元素数量 elements = tree.xpath(f"//*[contains(text(), '{searched_text}')]") return len(elements)
关键修改说明
- 替换
[CURRENT_PAGE]为ChromeDriver获取的page_source,确保使用的是登录后的会话页面内容 - 复用ChromeDriver实例,保证页面处于登录状态,解决无法直接用lxml访问登录页面的问题
注意事项
- 如果测试用例通过RobotFramework的SeleniumLibrary管理浏览器会话,建议用
lib.driver获取当前driver实例,避免创建新的浏览器窗口 - 若仅需基础元素操作,直接使用SeleniumLibrary自带的关键字(如
Count Elements)会更简便,无需自行用lxml解析
内容的提问来源于stack exchange,提问作者Skybright
相关产品推荐
相关产品推荐

