2016-03-25 10 views
0

Es gibt eine Erweiterung für Firefox namens Selenium IDE. Wie klicke ich nur auf ein Element, das Text in Selenium IDE enthält? Stellen wir uns als Beispiel vor, ich möchte eine Anzeige auf Gumtree veröffentlichen (in Wirklichkeit nicht, es ist nur das einfachste öffentlich sichtbare Beispiel, das ich mir vorstellen kann).Wie klicken Sie auf Text in Selenium IDE?

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head profile="http://selenium-ide.openqa.org/profiles/test-case"> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<link rel="selenium.base" href="https://www.gumtree.com/" /> 
<title>gumtree</title> 
</head> 
<body> 
<table cellpadding="1" cellspacing="1" border="1"> 
<thead> 
<tr><td rowspan="1" colspan="3">gumtree</td></tr> 
</thead><tbody> 
<tr> 
<td>open</td> 
<td>https://my.gumtree.com/postad</td> 
<td></td> 
</tr> 
<tr> 
<td>click</td> 
<td> *** what do I put in here to choose "For Sale"? *** </td> 
<td></td> 
</tr> 
<tr> 
<td>click</td> 
<td> *** what do I put in here to choose "House Clearance"? *** </td> 
<td></td> 
</tr> 
<tr> 
<td>click</td> 
<td>id=continueButton</td> 
<td></td> 
</tr> 
</tbody></table> 
</body> 
</html> 

Vielen Dank

Antwort

0

Sie müssen für diese Elemente Element Locators finden. Gute Sache ist, dass Selenium IDE können Sie es für Sie tun (im Aufnahmemodus).

Versuchen folgende Locators ..

For sale 
//form[@id='frmSyi']/div/div/div/div/nav/ul/li[2]/div/span 
or 
//li[2]/div/span[2] 

===========

House Clearance 
//form[@id='frmSyi']/div/div/div/div/div/div/div/div/ul/li[11] 
or 
//li[11] 

HINWEIS: Verwenden Sie ClickAt Befehl statt Klicken Sie auf Haus Freiraum für klicken.

+0

Das scheint nicht zu funktionieren, da es sich bei dem Projekt, das ich habe, ständig ändert (nicht gumtree). Warum ist das nicht durch Text möglich? Was könnte einfacher sein? – G33K

+0

Auch die Änderungen, die Sie vorgeschlagen haben, scheinen nicht zu funktionieren, Selenium sieht nicht, wo Sie klicken und stoppt. Hast du sie an deinem Ende probiert? Kannst du dann ein vollständiges XML bereitstellen? – G33K

+0

Das war nur, um dir eine Idee zu geben. Natürlich müssen Sie im Falle Ihrer Bewerbung nach Element-Locators suchen. Die meiste Zeit findet Selenium IDE sie automatisch. Andernfalls müssen Sie Dev-Tools wie Firegbug usw. verwenden. Ich kann Ihnen nur weiterhelfen, wenn Sie HTML Ihrer Anwendung teilen. – TestingWithArif

0

Normalerweise ist die Suche nach Elementen per Text eine schlechte Idee, da ein solcher Test nicht für jede Lokalisierung geeignet ist und im Falle von Textänderungen ziemlich zerbrechlich ist. Deshalb macht Selenium IDE es nicht out-of-the-box. Also solltest du es trotzdem mit XPath machen. Aber Sie können Ihren Text in Ihrem XPath verwenden:

click | //*[contains(text(),'For Sale')] 
click | //*[text()='House Clearance'] 

Der erste Befehl wird das erste Element klicken, die 'For Sale' Text enthält.

Der zweite Befehl wird klicken Sie auf das erste Element mit Text genau gleich ‚House Räumungs‘

Vorsicht - es sehr wahrscheinlich ist, dass es mehr als ein Element mit einem solchen Text auf der Seite ist (das ist ein weiterer Grund, warum es nicht gut ist, Text zu verwenden). In diesem Fall sollte Ihr XPath detaillierter sein. Zum Beispiel, wenn Ihr Element ist eine Spannweite wie:

<span>For Sale</span> 

können Sie XPath = // Spanne verwenden [text() = 'For Sale']

Sie mehr über XPath lesen here

0

wenn Sie Determinante sind, können Sie versuchen:

driver.findElement(By.linkText("ElementText")).click(); 

oder

driver.findElement(By.partialLinkText("ElementText")).click();