J'ai ce code d'élément HTML que j'ai actuellement du mal à comprendre pour l'utiliser pour cliquer sur l'onglet qui dit Problème. Comme le "problème" n'a pas de nom de classe ou d'ID d'élément unique, je suis incapable de comprendre comment envoyer un clic ().
J'ai essayé de vérifier si le z-index peut être utilisé comme index (supposé) et utilisé ci-dessous ligne de code
<div class="TabsViewPort" style="position: relative; overflow: hidden; width: 896px; height: 22px; float: left;"> <div style="overflow: visible; float: left; width: 897px; top: 0px; left: 0px;"> <dl class="OuterOuterTab"> <dd class="OuterTab" artabid="955000038" arwindowid="0" style="top: 1px; z-index: 1; left: 0px; visibility: inherit; display: block;"><span class="TabLeftRounded"> </span> <span class="Tab"><a href="javascript:" class="btn f1" style="color:#000000;">My Profile</a> </span> <span class="TabRight"> </span> </dd> <dd class="OuterTabSelected" artabid="600000203" arwindowid="0" style="top: 1px; z-index: 3; left: 63px; visibility: inherit; display: block;"><span class="TabLeft"> </span> <span class="Tab"><a href="javascript:" class="btn f1">Approval</a> </span> <span class="TabRight"> </span> </dd> <dd class="OuterTab" artabid="536870915" arwindowid="0" style="top: 1px; z-index: 1; left: 409px; visibility: inherit; display: block;"><span class="TabLeft"> </span> <span class="Tab"><a href="javascript:" class="btn f1">Problem</a> </span> <span class="TabRight"> </span> </dd> </dl> </div> </div>
mais il semble que je me trompe.
Code HTML comme ci-dessous
browser.switch_to_frame(a[3])
p>
3 Réponses :
veuillez trouver ci-dessous xpath pour cliquer sur le troisième onglet
(//span[@class="Tab"])[3]/a
Si l'élément est présent dans une iframe, vous devez d'abord passer à iframe pour accéder à l'élément.
Vous pouvez utiliser la méthode suivante pour frame_to_be_available_and_switch_to_it
()
Par ID de localisateur
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
OU
Par localisateur NAMEWebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//span[@class='Tab']//a[text()='Problem']"))).click()
Une fois que vous êtes passé à iframe, vous pouvez accéder à l'élément en utilisant xpath
p>
Cliquer sur l'élément Induce WebDriverWait
et element_to_be_clickable
()
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"name of the iframe")))
Vous devez importer la suite pour exécuter le code ci-dessus.
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"id of the iframe")))
J'espère que cela vous aidera.
L'élément avec le texte comme Problème est un élément JavaScript activé afin de click ()
sur l'élément que vous devez induire WebDriverWait pour que l'élément soit cliquable et vous pouvez utiliser l'une des solutions suivantes:
Utilisation de XPATH
A:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
Utilisation de XPATH
B (raccourci):
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='btn f1' and text()='Problem']"))).click()
Remarque : vous devez ajouter les importations suivantes:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='TabsViewPort']//dl[@class='OuterOuterTab']//dd[@class='OuterTab']//a[@class='btn f1' and text()='Problem']"))).click()
Je suis un noob qui n'a jamais essayé XPath mais cela m'a donné un début. Merci!