2017-10-10 1 views
-1

Je travaille avec Selenium en C# (ChromeDriver) en utilisant NUnit pour tester et frapper un hic sur ce sujet. Nous avons une table qui charge dynamiquement divers produits en fonction de ce qui est activé pour ce compte. J'essaie d'écrire des tests pour commander chaque produit, mais j'ai un problème avec le marquage d'une boîte. La table utilise simplement un ID numérique avec une colonne distincte utilisée pour le nom du produit (voir le code HTML ci-dessous).Cocher une case dans une colonne en utilisant une valeur d'une autre colonne dans la même table avec Selenium C#

Il y a un champ caché qui contient le nom du produit mais on m'a dit dans le passé que Selenium ne peut le voir que s'il est visible.

Toute aide ou idée serait un bon début pour moi de résoudre ce problème.

<td align="center" valign="top"> 
    <input id="reports11.selected1" name="reports[11].selected" onclick="javascript:doCheckbox(11, false)" style="margin-top:5px" type="checkbox" value="true"> 
    <input type="hidden" name="_reports[11].selected" value="on"> 
    <input id="reports11.productClassId" name="reports[11].productClassId" type="hidden" value="1"> 
    <input id="reports11.productId" name="reports[11].productId" type="hidden" value="99599"> 
    <input id="reports11.name" name="reports[11].name" type="hidden" value="Product Build - TEST"> 
</td> 

<td align="center" valign="top"> 
    <select id="reports11.priority" name="reports[11].priority" style="width:40px;padding:1px;margin: 0 0 0 0" onchange="javascript:doPriority(11)"> 
     <option value="0" selected="selected">--</option> 
    </select> 
</td> 

<td valign="top"> 
    Product Build - TEST 
</td> 

+0

Si vous avez juste besoin de la valeur du champ caché, cela devrait être facile. Obtenez d'abord IWebElement en utilisant la méthode GetElementBy, puis appelez GetAttribute ("value") sur l'IWebElement que vous avez et ensuite vous pouvez utiliser Selenium helper pour select => SelectElement et sa méthode SelectByValue. – Bobo

+0

Où sont vos tentatives de code? Vous faites référence à "Voir le code ci-dessous" mais il n'y en a pas. Vous devez être plus précis avec ce que vous essayez de faire et ce qui ne fonctionne pas. Vous référencez "marquer une case cochée" mais vous n'avez pas indiqué lequel ... il y a 5 INPUT et un SELECT. Est-ce que "Product Build - Test" est censé être le nom du produit? Vous avez un exemple HTML qui est bon ... maintenant ajoutez des références à ce HTML dans votre question pour éclaircir votre question. – JeffC

+0

@JeffC Désolé, nous avons fait une faute de frappe là-dessus. Fondamentalement, dans le tableau HTML, il y a une case à cocher que je peux vérifier via l'Automation using Selenium (il y a 50 produits avec des cases à cocher). Ce que je tente de faire est de ne cocher qu'une des cases en fonction du nom du produit affiché dans la ligne Product Build - TEST. Lorsque j'essaie, Selenium ne peut pas voir la case à cocher dans la zone ci-dessus lorsque les rapports (X) changent. – user1666884

Répondre

0

Ci-dessous le code suppose la case à la 1ère colonne et le nom du produit à la 3e colonne.

public void chooseProductbyName(productName) 
{ 
string xpath = "//tr[td[3][text()='"+productName+"']]/td[1]/input[@type='checkbox']"; 
driver.findElement(by.xpath(xpath)).click(); 
} 
+0

Merci! Je ne pouvais tout simplement pas comprendre comment faire cela avec une table de liste générée dynamiquement. – user1666884