Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
使用Selenium和Python的动态元素_Python_Selenium_Selenium Webdriver - Fatal编程技术网

使用Selenium和Python的动态元素

使用Selenium和Python的动态元素,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我试图用Selenium填充一个小表单,但它有动态元素,我无法以任何方式捕获这些元素。在此链接中,您可以看到以下表单: 我尝试了几乎所有的搜索元素来捕获对象,但都不起作用 驱动程序。通过xpath(“/*[contains(@id,'inputDiafnac')]”查找元素。获取(0)。发送密钥(“2”) 驱动程序。通过xpath(“/*[contains(@id,'inputDiafnac')]”)查找元素。发送密钥(“2”) 驱动程序。通过xpath(//input[@id='inputD

我试图用Selenium填充一个小表单,但它有动态元素,我无法以任何方式捕获这些元素。在此链接中,您可以看到以下表单:

我尝试了几乎所有的搜索元素来捕获对象,但都不起作用

驱动程序。通过xpath(“/*[contains(@id,'inputDiafnac')]”查找元素。获取(0)。发送密钥(“2”)
驱动程序。通过xpath(“/*[contains(@id,'inputDiafnac')]”)查找元素。发送密钥(“2”)
驱动程序。通过xpath(//input[@id='inputDiafnac1'])查找元素。发送键(“2”)
驱动程序。通过css选择器(“inputDiafnac1”)查找元素。发送按键(“2”)
驱动程序。通过id(“inputDiafnac1”)查找元素。发送密钥(“2”)


我不知道是否有其他方法可以捕获这些元素,谢谢。

我发现了一些我认为可能有用的方法

driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR, "[name='calcular-seguro-medico']"))
driver.find_element_by_id("inputDiafnac1").send_keys("2")
完成此框架内的元素后,需要使用切换回顶层框架

driver.switch_to.default_content()

不要将屏幕截图用于可以简单添加为文本的结果。这使得理解问题变得困难,并导致对问题的响应减少。日期选择器是否始终显示在页面上,还是仅在单击/调用某个内容后才显示?问题在于,您所需的元素位于本质上类似于IFRAME但实际上不是IFRAME标记的内容中<代码>我以前从未见过这种情况,也不知道如何处理。首先,我会尝试切换到可用的IFRAME方法,但不知何故,我不希望这些方法起作用。必须单击哪个按钮才能查看此表单?@vitaliis None,您只需向下滚动一些[name='calcular-seguro-medico']就不起作用了unique@vitaliis它不必是唯一的,您想要的只是DOM中的第一个。另外,另一个匹配项在对象标记中,因此Selenium甚至无法看到它。好的,我认为这会更好
。caja_tarificador>[name='calcular-seguro-medico']
我根本不知道这个网站。我通常从我能想到的最简单的定位器开始,直到我发现它有时不起作用为止。当这种情况发生时,我开始深入研究页面失败和未失败时的情况,并尝试找到一个在这两种情况下都有效的定位器。大多数情况下,它只是一直工作,但如果不工作,它可能会变成一个迭代过程。@Dev I检查了所需的元素并向上滚动,希望找到一个IFRAME。我发现了一些最初看起来像IFRAME的东西,但实际上是一个对象标记。。。这是我以前从未见过的。仔细观察,它看起来非常类似于IFRAME,显然其行为类似于IFRAME,内部有一个类似于IFRAME的文档容器,等等。