Follwing est le code HTML:
<div class="search-nav">
<div class="field">
<input id="search" type="text" class="input-data"
placeholder="Enter Claim or Payment Number..."
name="QuickSearch">
</input>
</div>
<button class="search-button" data-ng-click="performSearch($event)">
<i class="search icon"></i></button>
</div>
Code sélénium Python:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='field' and @id='search']"))).send_keys("12343545")
4 réponses
Je pense qu'il y a un frame
là-bas, vous passez d'abord au cadre puis localisez l'élément
//Switch to frame
driver.switch_to.frame(driver.find_element_by_id("Id of your Frame"))
waitElem = WebDriverWait(driver, 10)
element = waitElem .until(EC.element_to_be_clickable((By.ID, 'search')))
element.send_keys("323232")
Veuillez placer votre localisateur de cadre à la place de "Id de votre cadre"
Actuellement, votre Xpath ne fait référence à rien car il n'y a pas d'élément Web avec l'identifiant et la classe auxquels vous faites référence.
'AND' ne peut être utilisé dans xpath que sur deux attributs présents dans la même balise. Par exemple: // entrée [@ id = 'search' AND name = 'QuickSearch']
Donc, mettez à jour votre xpath comme:
// entrez [@ id = 'search'] OU // entrez [@ id = 'search' AND @ name = 'QuickSearch']
La raison pour laquelle vous ne pouvez pas passer de texte est que vous recherchez un élément où class = 'field'
et id = 'search'
. Avec cela, vous faites référence à 2 éléments différents. class = 'field'
est un <div>
et et id = 'search'
est un <input>
Ce que vous voulez faire, c'est envoyer du texte à l'entrée uniquement. Maintenant, si vous voulez l'envoyer à cette entrée spécifique sous le div avec class = 'field'
, essayez ce qui suit:
//div[@class='field']/input[@id='search']"))).send_keys("12343545")
Ou si c'est le seul champ de saisie avec l'ID "recherche".
//input[@id='search' and @class='input-data']
Si le champ de saisie est dans iframe, vous devez basculer le contrôle du pilote Web sur cet iframe particulier pour effectuer des opérations à l'intérieur:
Code
driver.switch_to.frame(driver.find_element_by_id("payspan-health"))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, 'search')))
driver.find_element_by_id('search').send_keys("12343545")
#To switch back to the main window, you can use
driver.switch_to.default_content()
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.