2017-01-18 4 views
-2

enter image description hereKlick mehr Tasten mit dem gleichen Klassennamen in Python

Dies ist eine Spalte in einer Tabelle in dieser Spalte Schaltflächen enthält, auf jedes Drücken der Tasten ein pdf heruntergeladen

Die Tasten haben die gleichen Klassennamen und ich möchte um auf alle Knöpfe zu klicken.

Dies ist, was ich tat, aber es funktioniert nicht:

addinfo = driver.find_element_by_class_name('btnAddInfo') 
for x in addinfo: 
    if addinfo[x].is_displayed(): 
     addinfo[x].click() 
+0

"Funktioniert nicht" ist ein bisschen vage. Was ist der erwartete Effekt und was ist der erzielte Effekt? Das erste, was ich denke, ist, dass 'find_element_by_class_name' das tut, was es sagt: Es wird das Element mit diesem Klassennamen finden. Wenn Sie sie * all * finden und in eine Liste einfügen wollen, müssen Sie 'find_elements_by_class_name' verwenden (beachten Sie die Pluralform). – Mikk

+0

'for' gibt Ihnen nicht die Nummer/den Index des Elements, sondern direkt dieses Element - so brauchen Sie' x.is_displayed() 'und' x.click() ' – furas

+0

BTW: immer in Frage stellen FULL Fehlermeldung (Traceback) . Text '" funktioniert nicht "' ist nutzlos ohne Fehlermeldung. – furas

Antwort

0

Hallo zuerst die Referenz des übergeordneten Container erhalten, in dem alle diese Tasten befinden und dann werden Sie auf die Schaltfläche Verweis erhalten haben, an die Sie wie indem eindeutige Parameter an die Methode klicken, die die Schaltfläche Identitäten, die Sie

public IWebElement GetButtontoClick(IWebElement prObj, string propName, string propVlu) 
    { 
     IWebElement btnToClick = null; 
     try 
     { 
      //get the list of all buttons in the prObj 
      IList<IWebElement> btnlList = prObj.FindElements(By.ClassName("xyz")); 

      //iterate through each button element and find the button you want to click 
      for (int i = 0; i < btnlList.Count; i++) 
      { 
       IWebElement btn = btnlList[i]; 

       var btnPropValue = ((IJavaScriptExecutor)DriverContext.Driver).ExecuteScript("return arguments[0]."+ propName+"; ", btn); 
       if (propVlu == btnPropValue.ToString()) 
       { 
        Console.WriteLine("You have found the button you want to click"); 
        btnToClick = btn; 
        break; 
       } 
      } 
     } 
     catch (Exception) 
     { 

      throw; 
     } 
     return btnToClick; 
    } 

Wie nennen diese Methode

//i know outerHTML is too big just for example sake i have give that you can provide any unique property name and unique property value which differentiates one button from other,outerHTML is one such property 
IWebElement myButton = GetButtontoClick(prObj, "outerHtml", "outerHTMLValue") 
klicken möchten

Ich hoffe, das funktioniert.

+0

Hey Danke, es hat funktioniert –

Verwandte Themen