Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在url上的搜索中传递值https://www.virustotal.com/gui/home/search 使用Selenium和Python_Python 3.x_Selenium Webdriver_Selenium Chromedriver_Shadow Dom_Queryselector - Fatal编程技术网

Python 3.x 如何在url上的搜索中传递值https://www.virustotal.com/gui/home/search 使用Selenium和Python

Python 3.x 如何在url上的搜索中传递值https://www.virustotal.com/gui/home/search 使用Selenium和Python,python-3.x,selenium-webdriver,selenium-chromedriver,shadow-dom,queryselector,Python 3.x,Selenium Webdriver,Selenium Chromedriver,Shadow Dom,Queryselector,关于如何将值传递给搜索框,请给出建议。从我所看到的情况来看,您尝试搜索的元素不是输入元素 您可能对INPUT标记感兴趣,而不是一些div。所以你需要更具体一些,比如 driver.findElement(By.xpath(“//div[@id='searchInput']//input”) 此语法可能不正确,因为它的运行程序未经测试。但是为了得到更精确的答案,你可能需要参考这条线索 希望这能有所帮助。从我看到的情况来看,您尝试搜索的元素不是输入元素 您可能对INPUT标记感兴趣,而不是一些d

关于如何将值传递给搜索框,请给出建议。从我所看到的情况来看,您尝试搜索的元素不是
输入
元素

您可能对
INPUT
标记感兴趣,而不是一些
div
。所以你需要更具体一些,比如

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

此语法可能不正确,因为它的运行程序未经测试。但是为了得到更精确的答案,你可能需要参考这条线索


希望这能有所帮助。

从我看到的情况来看,您尝试搜索的元素不是
输入元素

您可能对
INPUT
标记感兴趣,而不是一些
div
。所以你需要更具体一些,比如

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

此语法可能不正确,因为它的运行程序未经测试。但是为了得到更精确的答案,你可能需要参考这条线索


希望这有帮助。

AFAICT,您尝试自动化的网站无法让Selenium WebDriver与之交互。它可以从安全/防火墙的侧面检测Selenium Webdriver作为scrape bot或其他什么。。。我之所以这么说,是因为即使我使用Chrome开发工具从控制台进行查询,我也无法获取元素,例如,获取该站点上的搜索按钮:

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)

然后它什么也没回来


我认为除了网站本身,你的脚本没有什么错

AFAICT,您尝试自动化的网站无法让Selenium WebDriver与之交互。它可以从安全/防火墙的侧面检测Selenium Webdriver作为scrape bot或其他什么。。。我之所以这么说,是因为即使我使用Chrome开发工具从控制台进行查询,我也无法获取元素,例如,获取该站点上的搜索按钮:

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)

然后它什么也没回来


我认为除了网站本身,你的脚本没有什么错

这里的问题是您找不到位于
#shadowroot
中的元素。 可以通过查找包含要查找的元素的所有阴影根来修复此问题。在每个shadowroot中,您需要使用javascript的
querySelector
并查找下一个shadowroot,直到您可以访问您要查找的元素为止

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

driver=webdriver.Chrome()
驱动程序。获取(“https://www.virustotal.com/gui/home/search")
#请稍等,直到弹出搜索窗口
时间。睡眠(2)
#使用javascript检索最后一个shadowroot
javascript=“”返回文档
.querySelector('vt-virustotal-app').shadowRoot
.querySelector(“主视图”).shadowRoot
.querySelector('vt-ui-search-bar').shadowRoot
.querySelector('vt-ui-text-input')。shadowRoot“”
shadow\u root=driver.execute\u脚本(javascript)
#找到输入框
sbox=shadow\u root。通过\u id(“输入”)查找\u元素
sbox.发送密钥(“129.226.130.245”)
sbox.send_键(key.ENTER)

这里的问题是您找不到位于
#shadowroot
中的元素。 可以通过查找包含要查找的元素的所有阴影根来修复此问题。在每个shadowroot中,您需要使用javascript的
querySelector
并查找下一个shadowroot,直到您可以访问您要查找的元素为止

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

driver=webdriver.Chrome()
驱动程序。获取(“https://www.virustotal.com/gui/home/search")
#请稍等,直到弹出搜索窗口
时间。睡眠(2)
#使用javascript检索最后一个shadowroot
javascript=“”返回文档
.querySelector('vt-virustotal-app').shadowRoot
.querySelector(“主视图”).shadowRoot
.querySelector('vt-ui-search-bar').shadowRoot
.querySelector('vt-ui-text-input')。shadowRoot“”
shadow\u root=driver.execute\u脚本(javascript)
#找到输入框
sbox=shadow\u root。通过\u id(“输入”)查找\u元素
sbox.发送密钥(“129.226.130.245”)
sbox.send_键(key.ENTER)
网站中占位符文本为URL、IP地址、域或文件哈希的搜索字段位于多个
#阴影根(打开)
的深处


解决方案 要将字符序列发送到搜索字段,您必须使用,并且可以使用以下命令:

  • 代码块:

    document.getElementsByClassName('search-button')
    
  • 浏览器快照:


工具书类 您可以在以下内容中找到一些相关讨论:

网站中占位符文本为URL、IP地址、域或文件哈希的搜索字段位于多个
#阴影根(打开)
的深处


解决方案 要将字符序列发送到搜索字段,您必须使用,并且可以使用以下命令:

  • 代码块:

    document.getElementsByClassName('search-button')
    
  • 浏览器快照:


工具书类 您可以在以下内容中找到一些相关讨论:


我尝试了两种方法,但都没有成功sbox=driver。通过xpath('//div[@id='searchInput']///input')sbox查找元素。发送密钥(“129.226.130.245”)sbox。发送密钥(keys.ENTER)sbox=driver。通过xpath('/*[@id=“input”]”)sbox查找元素。发送密钥(“129.226.130.245”)sbox。发送密钥(keys.ENTER)@id=“input”winn不起作用,不是吗?输入是类型,不是id。我尝试了两种方法,但都没有成功sbox=driver。通过xpath('//div[@id='searchInput']///input')sbox查找元素。发送密钥(“129.226.130.245”)sbox。发送密钥(keys.ENTER)sbox=driver。通过xpath('/*[@id=“input”]”)sbox查找元素。发送密钥(“129.226.130.245”)sbox。发送密钥(keys.ENTER)@id=“input”winn不起作用,不是吗?输入是类型,不是id。谢谢你的l