2017-10-19 2 views
1

Ich versuche, klicken Sie auf Upload vollständig Formular, durch Selen mit XPath, aber das tut nichts mit seinem XPath, ich fragte mich, ob jemand irgendwelche Vorschläge hatte Antworten?Hochladen von Dateien mit Selenium in C#?

enter image description here

Unten ist der HTML-Code aus Chrome Inspektion.

<button ng-if="$root.AccessLevel.Standard" class="btn btn--small btn--icon ng-pristine ng-valid ng-touched" ng-model="vm.uploads[workCategory.Id].reference" ngf-max-size="'5MB'" ngf-model-invalid="vm.uploads[workCategory.Id].referenceInvalid" ngf-pattern="'.pdf,.doc,.docx,.bmp,.gif,.jpg,.jpeg,.tif,.wmf,.png'" ngf-select="vm.uploadFile($file, 'WorkCategoryReference', workCategory.Id, workCategory.References, workCategory.Id+'uploadRef')"> 
    <span promise="vm.promises[workCategory.Id+'uploadRef']"> 
     <span ng-hide="pending" class=""> 
      <i class="fa fa-lg fa-cloud-upload"></i> 
     </span> 
     <span ng-show="pending" class="ng-hide"> 
      <i class="fa fa-lg fa-refresh fa-spin"></i> 
     </span> 
    </span> 
    Upload completed form 
</button> 

Unten ist meine NUnit-Klasse mit dem XPath in

wait.PathWaitAndClick(driver, "*[@id=\"accordiongroup - 299 - 4516 - panel\"]/div/div[2]/div[1]/table/tfoot/tr/td/button", 2000); 

bestand auch unter I WebExtension Methode bin mit.

public static void PathWaitAndClick(this WebDriverWait wait, IWebDriver driver, string path, int pause = 0) 
{ 
    if (pause > 0) 
    { 
     System.Threading.Thread.Sleep(pause); 
    } 
    wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(path))); 
    IWebElement viewAllWc = driver.FindElement(By.XPath(path)); 
    if (pause > 0) 
    { 
     System.Threading.Thread.Sleep(pause); 
    } 
    viewAllWc.Click(); 
} 
+0

Drei einfache Fragen: Ist Ihr XPath im Moment des Klickens gültig? Befindet sich die Schaltfläche in einem Iframe-Tag? Können Sie Ihre laufende Methode pausieren und prüfen, ob ein Fehler in der Browser-Konsole angezeigt wird? –

+0

Es ist nicht, traf meinen Haltepunkt @StriterAlfa –

+0

Sie können überprüfen, ob Ihr xpath gültig ist, indem Sie den Befehl $ x ("Ihr xpath") an der Chrome-Konsole verwenden. Sie können auch überprüfen, ob es sich in einem Iframe befindet, das den HTML-Code der Seite überprüft. Wenn der Debugger Ihren Haltepunkt nicht erreichen kann, um Ihre Klickaktion zu debuggen, liegt ein Fehler vor, den Sie nicht benötigen. –

Antwort

1

den begrenzten Rahmen von HTML Angenommen, Sie zur Verfügung gestellt haben, würde ich contains in Ihrem XPath verwendet "Upload completed form" für gegebenes button Element mit der Zeichenfolge zu suchen.

//button[contains(., 'Upload completed form')]