我用的是用棱角制作的复杂应用。我通常需要在下拉列表中选择不存在于DOM中的项,因为项目列表来自API调用,并且它们只在被选中后显示在DOM中的span标记中。只有在选择了一些项目之后,它们才会显示在DOM中的span标记中,但是在被选中之前,它们永远不会出现。有时,它的工作方式类似于我从SELENIUM获得的下面的代码,但是通常情况下,IDE和驱动程序都会失败,因为它们找不到这些项。
# 1) This click does the API call and opens the dropdown displaying the list of items that become available to select
# driver.find_element(By.CSS_SELECTOR, "#dropdown-5 .bxb-dropdown-value-n").click()
# 2) Sometimes it works something like this (code found by Selenium IDE) but this class #dropdown-item-6879 never shows in the DOM, even when you can see the item selected with the text in it
# driver.find_element(By.CSS_SELECTOR, "#dropdown-item-6879 .value").click()我通常会得到一个例外:"ElementNotInteractableException: Message: element interactable“
但是,即使IDE生成这段代码,它通常也会失败。如果可能的话,我会感谢你的帮助。非常感谢!
发布于 2022-01-27 19:05:00
如果这对任何人都有用:最后,我可以打印从父元素中迭代的项列表,这样我就知道即使在检查器中没有显示项列表时,也存在针对所有项的span标记:
subtypesList = driver.find_elements(By.XPATH, './/span[@class = "value-content"]' )
for e in subtypesList:
print(e.text)然后,我可以通过标记和文本获取列表中的每一项,一旦我选择了它,我就会在检查器/DOM中看到它:
driver.find_element(By.CSS_SELECTOR, "#dropdown-0 .bxb-dropdown-placeholder").click()
driver.find_element(By.XPATH, "//*[contains(text(), '3PL')]").click()https://stackoverflow.com/questions/70869312
复制相似问题