0
votes

Comment traverser tous les éléments TR avec dans la table à l'aide de Selenium Python

Comment traverser tout TR pour donner des valeurs dans td.in mon code Il est primordial le même tr / td.

Ma table. P>

#add qty
    rowCount=len(driver.find_elements_by_xpath("//tbody[@id='gridview-1161-body']/tr"));
    print(rowCount)
    for row in rowCount:
        element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td.x-grid-cell.x-grid-td.rp-grid-editable-cell[role='gridcell']")))
        element.click()
        time.sleep(2)

        #input box to give qty-working for this id
        driver.find_element(By.ID, "numberfield-1243-inputEl").send_keys('10')
        driver.find_element(By.ID, "numberfield-1243-inputEl").send_keys(Keys.ENTER)


3 commentaires

Prenez tous les TR dans la liste et itérez-le alors do List [0] .Find_Element (TD)


J'ai beaucoup de TD à l'intérieur de la seule tr. @Dev


obtenir ces td de chaque tr dans la liste et itérer cette liste aussi bien


3 Réponses :


0
votes

Obtenez toutes les lignes, puis trouvez l'enfance td et entrée : xxx

secondaire avec xpath et index: xxx


5 commentaires

Rows = wait.until (EC.Visiviy_of_Alt_elements_LOCated ((((CSSS_SEL OTEDER) TR [ID * = '- Record -']. X-Grid-Data-Row ")))) Fichier" C: \ Utilisateurs \ 1024983 \ Appdata \ Local \ Programmes \ Python \ Python37 \ LIB \ SITE-SITE-PACKAGES \ SELEN IUM \ WEBDRIVER \ SUPPOR T \ PAYER.PY ", LINE 80, EN JUSQU'À JUSQU'À SUPPORTER TEMPSEXEXCEPT (message, écran, StackTrace) Selenium.common. exceptions.timeoutException: Message:


Même après avoir chargé cette page, je reçois une erreur de délai d'attente.


Essayez-le avec présence_of_all_elements_located . Vérifier le code mis à jour


rangée.find_element_by_css_selector ("TD [ROLE [ROLE = 'GRIDCELL']")


Essayez le deuxième code avec xpath avec ollement_to_be_clickable ou supprimer Cliquez sur Click



1
votes

Pour gérer l'identifiant dynamique Induce webDriverwait () code> et visibilité_of_all_elements_located code> () et suivant l'option xpath code>.

driver=webdriver.Chrome()
rows=WebDriverWait(driver,15).until(EC.visibility_of_all_elements_located((By.XPATH,"//tbody[contains(@id,'-body')]//tr[@class='x-grid-row x-grid-data-row']")))
for rownum in range(len(rows)):

     #To avoid stale exception re-assign rows elements again
     rows = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//tbody[contains(@id,'-body')]//tr[@class='x-grid-row x-grid-data-row']")))
     element=rows[rownum].find_element_by_xpath(".//td[contains(@class,'rp-grid-editable-cell  rp-grid-editable-cell') and @role='gridcell']")
     element.click()
     input=rows[rownum].find_element_by_xpath(".//input[@name='Quantity' and @role='spinbutton']")
     input.send_keys('10')
     input.send_keys(Keys.ENTER) 


2 commentaires

@Divyamani: Pouvez-vous partager votre URL si possible. Ce code doit fonctionner pour chaque ligne, à moins que quelque chose ne changeait.


Element = lignes [ROWNUM] .Find_Element_by_xpath (".// TD [contient (@ Classe, 'RP-GRID-EDITH-EDITALE-CELLLE-CELLLE-COLETH-EDITH-EDITH-EDITAIBLE-EDITAIBLE-EDITAIBLE-EDITAIBLE-EDITAIBLE-Cell') et @ ROLE = 'GRIDCELL']" ) IndexError: index de liste hors de portée C'est ce que je reçois de la deuxième itération.Veuillez m'aider à résoudre ce problème



0
votes

traverser tout le enfant balises avec dans l'ancêtre étiquettes à envoyer séquence de caractères Vous devez induire < em> webdiverwait pour le visibilité_of_all_elements_located () et vous pouvez utiliser ce qui suit Stratégies de localisateur : xxx


0 commentaires