1
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)

请建议,关于如何将值传递给搜索框

4

4 回答 4

0

这里的问题是您找不到位于#shadowroot. 您可以通过查找包含您要查找的元素的所有 shadowroot 来解决此问题。在每个 shadowroot 中,您将需要使用 javascriptquerySelector并找到下一个 shadowroot,直到您可以访问您正在寻找的元素。

执行以下操作以访问您要查找的搜索输入:

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)
于 2020-07-12T18:48:25.070 回答
0

据我所知,您尝试搜索的元素不是input元素。

html结构 您会对INPUT标签感兴趣,而不是一些div. 所以你需要更具体,比如

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

此语法可能不正确,因为它未经测试正在运行的程序。但是您可能需要参考此线程以获得更准确的答案。在 selenium 中定位 WebElements 的子节点

希望这可以帮助。

于 2019-12-15T17:15:47.713 回答
0

AFAICT,您尝试自动化的网站无法让 Selenium WebDriver 与之交互。它可能是从安全/防火墙方面检测 Selenium Webdriver 作为抓取机器人或某事......我这么说的原因,因为即使我使用 Chrome 开发工具从控制台查询时,我也是无法获取元素,例如,获取该站点上的“搜索”按钮:

document.getElementsByClassName('search-button')

在此处输入图像描述

然后它什么也没返回。

我认为您的脚本没有问题,但网站本身没有问题。

于 2019-12-16T02:42:31.870 回答
0

网站https://www.virustotal.com/gui/home/search中带有占位符文本的搜索字段位于多个.URL, IP address, domain, or file hash#shadow-root (open)

影子根开放病毒总搜索


解决方案

要将字符序列发送到您必须使用的搜索字段shadowRoot.querySelector(),您可以使用以下定位器策略

  • 代码块:

    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")
    
  • 浏览器快照:

影子根开放病毒总搜索文本


参考

您可以在以下位置找到一些相关的讨论:

于 2020-07-13T21:35:32.227 回答