2016-04-03 7 views
1

Anscheinend Selenium IDE ist ziemlich unzuverlässig. Der letzte Befehl im folgenden Skript hat z. B. keinen Effekt innerhalb des Skripts, aber wenn ich ihn doppelt anklicke, öffnet sich der Dateiauswahldialog. Warum?Selenium IDE: Warum ClickAt hier nicht funktioniert?

Eine andere Frage, wie kann ich Dateiauswahl mit einem nächsten Befehl bereitstellen?

<?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>waitForPageToLoad</td> 
    <td>5000</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>//form[@id='frmSyi']/div/div/div/div/nav/ul/li[2]/div/span[2]</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPageToLoad</td> 
    <td>500</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>//form[@id='frmSyi']/div/div/div/div/div/div/div/div/ul/li[10]/span</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPageToLoad</td> 
    <td>500</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>//form[@id='frmSyi']/div/div/div/div/div/div[2]/div/div/ul/li[2]/span</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPageToLoad</td> 
    <td>500</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>//form[@id='frmSyi']/div/div/div/div/div/div[3]/div/div/ul/li[4]/span</td> 
    <td></td> 
</tr> 
<tr> 
    <td>pause</td> 
    <td>500</td> 
    <td></td> 
</tr> 
<tr> 
    <td>click</td> 
    <td>id=continueButton</td> 
    <td></td> 
</tr> 
<tr> 
    <td>pause</td> 
    <td>500</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>link=Add image</td> 
    <td></td> 
</tr> 
</tbody></table> 
</body> 
</html> 
+1

Wenn Sie statische Verzögerungen verwenden und nicht warten, bis bestimmte Elemente angezeigt werden, bevor Sie versuchen, auf sie zu klicken, und hässlichen langen xpath verwenden, für den Sie nicht einfach feststellen können, ob es richtig ist, dann wird IDE unzuverlässig. Versuchen Sie, "waitForElementPresent" zu verwenden, bevor Sie darauf klicken und bessere Locators verwenden. –

+0

IDE ist seit Jahren veraltet, und Selenium hat die Leute dazu gedrängt, zu WebDriver zu wechseln, um Wartezeiten viel besser kontrollieren zu können. –

+0

@AndrewRegan wo haben Sie gesehen, dass es veraltet war? AFAIK behandeln sie einfach nicht als eine ernsthafte Testmethode: "Verwenden Sie diese Option, um entweder einfache Skripts zu erstellen oder explorative Tests zu unterstützen." - sagt die Seite –

Antwort

0

ClickAt ist ein spezieller Befehl zum Klicken auf Koordinaten. Du benutzt es also falsch. Sie sollten normalen Klick oder DoubleClick oder (in einem sehr speziellen Fall) clickAt mit der Angabe der Koordinatenzeichenfolge verwenden.

Datei-Upload ist nicht so einfach. Sie sollten eine Eingabe finden, die den Dateinamen zum Hochladen enthält. Senden Sie einen Dateinamen mit type command oder javascript. Und schließlich das Hochladen initiieren. Wie:

type | id=hiddenInputForFileName | /path_to_your_file/your_file.lol 
click | id=startUploadingButton 

Das ist ein Beispiel. Ihr Code hängt von dem Hochladen des Formularentwurfs ab. Ich hoffe, es wird helfen. Wenn es nicht bitte geben Sie die HTML Ihrer Seite und ich werde den Code für Ihre Situation veröffentlichen.