Skip to main content
 首页 » 编程设计

Python RobotFramework 查找元素

2025年05月04日29zfyouxi

我是机器人框架的新手

我想做一些不在标准 selenium2library 中的函数

1) 如何让驱动程序在我的函数中使用?

2) 如何在库中使用 _element_find 函数(来自 Selenium2Library/keywords/_element.py)? (我尝试导入大部分内容,但仍然无法访问 _element_find)

class page(object): 
    def __init__(self, driver=None, title=None, url=None): 
        self._driver = driver 
        self._title = title 
        self._url = url 
 
def get_driver(self): 
    return self._driver 
 
def wait_for_visibility(self, locator, info="no error", timeout=10): 
    return WebDriverWait(self.get_driver(), timeout).until( 
        expected_conditions.visibility_of_element_located(locator), info) 
 
def find_element(self, locator): 
    return self.get_driver().find_element(*locator) 
 
def clear_field(self, locator): 
    self.find_element(locator).clear() 
 
def send_keys(self, value_to_send, locator, info="field was not visible"): 
    self.wait_for_visibility(locator, info) 
    self.find_element(locator).send_keys(value_to_send) 
    return self 
 
def clear_field_and_send_keys(self, value_to_send, locator, info="field was not visible"): 
    self.clear_field(locator) 
    self.send_keys(value_to_send, locator, info) 
 
def send_to_field_random_value_of_length(self, locator, leng, info="field was not visible"): 
    self.clear_field(locator) 
    value = rstr.rstr("abcdefghijklmnoprstuwxyz", leng) 
    self.send_keys(value, locator, info) 
 
def my_click(self, locator, info="click on button error", timeout=5): 
    element = self.wait_for_visibility(locator, info, timeout) 
    element.click() 

然后我想以这种方式使用它:

Register Proper Data 
    [Setup]    Open Browser ${web-page}    browser=${browser} 
    my click  (By.PARTIAL_LINK_TEXT, "Zarejestruj nowe konto") 
    send to field random value of length  (By.ID, "rejestracja_konta_imie")  7 

这是正确的方法吗?

现在我收到错误 AttributeError: 'NoneType' object has no attribute 'find_element'

请您参考如下方法:

在 Robot Framework 之外使用 Selenium2Library 的目的是什么?如果您创建自己的 Python 库,您应该使用纯 Selenium Webdriver。要向现有的 Selenium2Library 添加一些功能,您应该扩展此类并创建您自己的包含新方法的类(例如 JedrekSelenium2Library)。