Python RobotFramework查找元素

时间:2017-07-24 15:56:39

标签: python robotframework

我是机器人框架的新手

我想制作一些不在标准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'对象没有属性'find_element'

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

我找到了答案

from Selenium2Library import Selenium2Library

class page(Selenium2Library):

def get_driver(self):
    return self._current_browser()

我现在得到的错误: Python Robot Framework Pass arguments to a function 有人可以帮忙吗?

答案 2 :(得分:1)

您的错误可能来自find_element中的return self.get_driver().find_element(*locator)

尝试创建一个最小的工作示例并分享,以便我们可以重现。