Je voudrais cliquer sur la cellule dans le tableau ID "ContractDesc", "EEE" content:
La page HTML:
driver.find_element_by_name("ContractDesc").click()
Mon code qui n'est pas fonctionnement:
driver.find_element_by_xpath('//*[@id="1"]/td[2]').click()
et
<table cellpadding="0" cellspacing="0" border="0" class="tablelist" id="table1" style="width: 80%; margin: 0px 0px 0px 0px;"> <thead> <tr> <th style="width: 30%"> AAA </th> <th> BBB </th> <th style="width: 40%"> CCC </th> </tr> </thead><tbody> <tr id="1" onmouseout="fnMouseOut(1)" =="" ""="" onmouseover="fnMouseOver(1)" onclick="selectRow(this)" style="cursor: pointer; background-color: rgb(248, 248, 248);" projectid="111111"> <td align="center" name="contno"> DDD </td> <td name="ContractDesc"> EEE </td> <td name=""> FFF </td> </tr> </tbody> </table>
L'erreur est:
selenium.common.exceptions.NoSuchElementException: Message: aucun élément de ce type: impossible de localiser l'élément: {"method": "xpath", "selector": "// * [@ id =" 1 "] / td [ 2] "}
3 Réponses :
Essayez ce XPath:
driver.find_element_by_xpath("//td[@nom='ContractDesc' ").click()
Veuillez vérifier si l'élément est dans une iframe, si oui, vous devez basculer le pilote vers l'iframe en utilisant: WebElement iFrame = driver.findElement (By.tagName ("iframe")); code> puis
driver.switchTo (). frame (iFrame);
et ensuite vous devez cliquer sur l'élément par le xpath donné et si vous voulez basculer vers le contexte par défaut, vous pouvez utiliser driver.switchTo (). defaultContent ();
Merci monsieur, mais l'erreur "Impossible de localiser l'élément:"
Veuillez vérifier si c'est dans une iframe et si oui, vous devez basculer le pilote vers l'iframe en utilisant: WebElement iFrame = driver.findElement (By.tagName ("iframe"));
puis < code> driver.switchTo (). frame (iFrame); puis vous devez cliquer sur l'élément par driver.find_element_by_xpath ("// td [@ name = 'ContractDesc']"). c lick ()
et si vous voulez changer dans le contexte par défaut, vous pouvez utiliser driver.switchTo (). defaultContent ();
Veuillez essayer ceci et me faire savoir si cela fonctionne. Je modifie également ma réponse.
Vous pouvez utiliser xpath ci-dessous pour sélectionner par nom et texte, normalize-space
supprimer tous les espaces:
//td[@name='ContractDesc' and normalize-space(.)='EEE']
Pour cliquer ()
sur l'élément avec le texte comme EEE , vous pouvez utiliser l'une des solutions suivantes:
Utilisation de CSS_SELECTOR
:
driver.find_element_by_xpath("//table[@class='tablelist' and @id='table1']//tr[@id='1']//td[@name='ContractDesc' and normalize-space()='EEE']").click()
Utilisation de XPATH
:
driver.find_element_by_css_selector("table.tablelist#table1 tr#1 td[name='ContractDesc']").click()
Merci beaucoup, mais les deux ne fonctionnent pas. Erreur de retour CSS "A18-0110" et XPATH renvoie "Impossible de localiser l'élément:"
La table est-elle dans un
IFRAME
?Oui, je pense que c'est sur le cadre, monsieur JeffC.
@ TZJ4, comment ça va? Avez-vous vérifié ma réponse? Merci.
@RatmirAsanov Personne ne peut utiliser, des réponses entières ont obtenu des erreurs comme "impossible de localiser l'élément". Je vous remercie
@ TZJ4, montrez-nous plus de HTML (iframe ou popup ou autre chose dans lequel votre élément Web nécessaire).
Merci beaucoup, passez à iframe maintenant cela a fonctionné.