我是机器人框架的新手
我想制作一些不在标准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'
答案 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)
。
尝试创建一个最小的工作示例并分享,以便我们可以重现。