You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:45:33