1
votes

Comment passer la valeur dans la recherche sur l'url https://www.virustotal.com/gui/home/search en utilisant Selenium et Python

driver.get("https://www.virustotal.com/gui/home/search")
sbox = driver.find_element_by_id("searchInput")
sbox.send_keys("129.226.130.245")
sbox.send_keys(Keys.ENTER)
Please suggest, on how to pass values to search box

0 commentaires

4 Réponses :


0
votes

D'après ce que je peux voir, l'élément que vous essayez de rechercher n'est pas un élément input .

 structure html Vous seriez intéressé par la balise INPUT , plutôt que par certains div . Vous devez donc être plus précis, quelque chose comme

driver.findElement (By.xpath ("// div [@ id = 'searchInput'] // input"))

Cette syntaxe peut ne pas être correcte, car son programme en cours d'exécution n'a pas été testé. Mais vous voudrez peut-être vous référer à ce fil afin d'obtenir une réponse plus précise. Localisation des nœuds enfants de WebElements dans le sélénium .

J'espère que cela vous aidera.


2 commentaires

J'ai essayé les deux manières mais pas de chance sbox = driver.find_element_by_xpath ('// div [@ id =' searchInput '] // inpu‌ t') sbox.send_keys ("129.226.130.245") sbox.send_keys (Keys.ENTER) sbox = driver.find_element_by_xpath ('// * [@ id = "input"]') sbox.send_keys ("129.226.130.245") sbox.send_keys (Keys.ENTER)


@ id = "input" ne fonctionnera pas, n'est-ce pas? l'entrée est le type, pas l'ID.



0
votes

AFAICT, le site Web que vous essayez d'automatiser n'est pas capable de faire interagir Selenium WebDriver. Cela pourrait être de la forme de sécurité / pare-feu de son côté pour détecter Selenium Webdriver comme le robot de scrape ou qc ... La raison pour laquelle je dis cela, parce que même lorsque j'ai utilisé les outils de développement Chrome pour interroger la console, j'étais impossible d'obtenir l'élément, par exemple, obtenir le bouton Rechercher sur ce site:

document.getElementsByClassName('search-button')

entrez la description de l'image ici

puis il n'a rien renvoyé .

Je pense qu'il n'y a rien de mal dans vos scripts à part le site Web lui-même.


1 commentaires

Merci d'avoir examiné cela. Existe-t-il une solution alternative pour que cela fonctionne



0
votes

Le problème ici est que vous ne pouvez pas trouver les éléments qui se trouvent dans un #shadowroot . Vous pouvez résoudre ce problème en trouvant tous les shadowroots contenant l'élément que vous recherchez. Dans chacun des shadowroots, vous devrez utiliser querySelector de javascript et trouver le shadowroot suivant, jusqu'à ce que vous puissiez accéder à l'élément que vous recherchiez.

Procédez comme suit pour accéder à l'entrée de recherche que vous cherchiez pour:

driver =webdriver.Chrome()
driver.get("https://www.virustotal.com/gui/home/search")

# wait a bit untill search pops up
time.sleep(2)

# Retrieve the last shadowroot using javascript
javascript = """return document
.querySelector('vt-virustotal-app').shadowRoot
.querySelector('home-view').shadowRoot
.querySelector('vt-ui-search-bar').shadowRoot
.querySelector('vt-ui-text-input').shadowRoot"""
shadow_root = driver.execute_script(javascript)

# Find the input box
sbox = shadow_root.find_element_by_id("input")
sbox.send_keys("129.226.130.245")
sbox.send_keys(Keys.ENTER)


0 commentaires

0
votes

Le champ recherche avec le texte espace réservé comme URL, adresse IP, domaine ou hachage de fichier dans le Le site Web https://www.virustotal.com/gui/home/search se trouve au plus profond de plusieurs # shadow-root (open) .

shadow-root-open-virustotal-search


Solution

Pour envoyer une séquence de caractères à la recherche , vous devez utiliser shadowRoot .querySelector () et vous pouvez utiliser ce qui suit Stratégie de localisation :

  • Bloc de code:

    from selenium import webdriver
    import time
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    driver.get("https://www.virustotal.com/gui/home/search")
    time.sleep(7)
    search_field = driver.execute_script("return document.querySelector('vt-virustotal-app').shadowRoot.querySelector('vt-auth-checker home-view').shadowRoot.querySelector('vt-ui-search-bar').shadowRoot.querySelector('vt-ui-text-input').shadowRoot.querySelector('input#input')")
    search_field.send_keys("129.226.130.245")
    
  • Instantané du navigateur:

 shadow-root-open-virustotal-search-text


Références

Vous pouvez trouver quelques discussions pertinentes dans:


0 commentaires