2017-07-24 3 views
1

Ich bin neu zu Robot FrameworkPython Robot Framework findet Element

Ich mag einige Funktionen machen, die nicht in dem Standard selenium2library sind

1) Wie Treiber erhalten in meinen Funktionen zu benutzen?

2) Wie _element_find Funktion (von Selen2Library/keywords/_element.py) innerhalb der Bibliothek zu verwenden? (Ich habe versucht fast alles zu importieren und noch _element_find bin außer Reichweite)

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() 

dann würde ich es auf diese Weise zum Beispiel verwenden mag:

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 

ist es ein richtiger Ansatz?

Jetzt bekomme ich Fehler Attribute: ‚NoneType‘ Objekt hat kein Attribut ‚find_element‘

Antwort

2

fand ich die Antwort

from Selenium2Library import Selenium2Library 

class page(Selenium2Library): 

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

der Fehler ich erhalte jetzt: Python Robot Framework Pass arguments to a function kann jemand helfen?

+0

Gut. Sie haben die Vererbung verwendet. Ich schlage vor, die Klasse umzubenennen. Python-Klassen sollten mit Großbuchstaben beginnen. Ich habe versucht, dies zu bearbeiten, aber "Bearbeitungen müssen mindestens 6 Zeichen lang sein". Was für eine seltsame Anforderung. –

1

Ihre Fehler wahrscheinlich von return self.get_driver().find_element(*locator) in find_element kommt.

Versuchen Sie, ein minimales Arbeitsbeispiel zu erstellen und zu teilen, damit wir es reproduzieren können.

2

Was ist ein Zweck der Verwendung von Selenium2Library außerhalb von Robot Framework? Wenn Sie Ihre eigene Python-Bibliothek erstellen, sollten Sie lieber Selenium Webdriver verwenden. Um der Selenium2Library einige Funktionen hinzuzufügen, sollten Sie diese Klasse erweitern und eigene (zB JedrekSelenium2Library) erstellen, die neue Methoden enthalten.

Verwandte Themen