2017-07-24 162 views
1

我是新来robotframeworkPython的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”

回答

2

我找到了答案

from Selenium2Library import Selenium2Library 

class page(Selenium2Library): 

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

的错误,现在我越来越: Python Robot Framework Pass arguments to a function 谁能帮助?

+0

好。你使用了继承。我建议重命名班。 Python类应该以大写字母开头。我试图编辑这个,但“编辑必须至少有6个字符”。多么奇怪的要求。 –

1

你的错误可能是从return self.get_driver().find_element(*locator)在find_element到来。

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

2

在Robot Framework之外使用Selenium2Library的目的是什么?如果你创建自己的Python库,你应该使用纯硒Webdriver。为了给现有的Selenium2Library增加一些功能,你应该扩展这个类并创建包含新方法的你自己的(例如JedrekSelenium2Library)。