2016-06-21 5 views
0

Ich versuche, einen Automatisierungsschritt zu schreiben, der auf einen Link klickt, der Locator, den ich verwenden muss, um den Link zu zielen, ist mit dem Ende des Titelattributs, dem weil es mehrere Links desselben Typs geben kann, von denen einige gleich benannt werden, ist dieser Abschnitt des Titels, den ich betrachte, das einzige Bit innerhalb dieser Links, das eindeutig ist (nicht mein Anruf, das ist ein existierender System an Ort und Stelle Ich schreibe Tests für). Ich habe kein Problem, den Locator des Links mit dieser Methode zu finden.Selenium Webdriver - Verwenden einer gespeicherten Zeichenfolge in einem CSS-Locator

Hinweis: Einige Elemente des Codes wurden aufgrund von Datenschutzbestimmungen meines Arbeitgebers geändert.

@FindBy(css = "#id .Content form > a[title$='12345678']") 
WebElement linkName; 

jedoch die Referenznummer am Ende des Titels, die ich suche ändern kann, auf anderen Dateneingaben abhängig, und es wird thorughout meine Automatisierungssuite an mehreren Stellen verwendet werden, so wie ich bin Wenn Sie versuchen, diese Nummer als String am Anfang der Suite zu speichern, müssen Sie den Locator und alle anderen Bereiche, in denen er benötigt wird, referenzieren. Dort beginnt mein Problem. Es scheint mir unmöglich zu sein, den Lokator zum Arbeiten zu bringen, indem er auf den String verweist. Wenn ich das versuche, bekomme ich immer Fehler, normalerweise Syntaxfehler.

@FindBy(css = "#id .Content form > a[title$='%s']", titleVariable) 
WebElement linkName; 

Ich habe versucht, dies mehrfach zu arrangieren, aber kann nicht scheinen, es in ein Arbeitsformat zu bekommen. Irgendwelche Vorschläge wären willkommen.

Ich entschuldige mich, wenn dies unklar scheint, wie oben erwähnt aufgrund der Art meiner Arbeitgeber Geschäft kann ich nicht zu viele Besonderheiten aufgrund von Datensicherheit Einschränkungen geben, so mussten Dinge in einer runderen Art zu erklären, als ich könnte haben.

Antwort

1

allererst muss u haben hier konstante Größe zu verwenden. Verwenden Sie den folgenden Code:

final String titleVariable = "ur title"; 

@FindBy(css = "#id .Content form > a[title$='"+titleVariable+"']") 
WebElement linkName; 
+0

Vielen Dank! das hat perfekt funktioniert – Jsmith2800

0

Wenn Sie WebDriver Objekt in dieser Klasse haben Sie dies tun können:

String titleVariable = "Your Title"; 
String cssSelector = "#id .Content form > a[title$='" + titleVariable + "']"; 

WebElement linkName = driver.findElement(By.cssSelector(cssSelector));