Selenium:查找存储在容器中的元素

Selenium: Find an element stored in a container

我正在使用 Selenium 来自动化流程。到目前为止,我已经很成功地找到了我需要的东西,但是找不到找到这个元素的方法:

<a href="javascript:void(0);" onclick="AUL.update('AssignedAssetsUpdateContainer', {}, '13.7.25.0.0.0.0.2.3.0.0.1.2.0.3.0.1.5.3.3.0.1.3.1.5.0.0.1.2.9.5.1.19.0.1.3.1');">
123456
</a>

我首先尝试通过搜索所有标签来查找它:

assetElements = driver.find_elements_by_tag_name("a")
for element in assetElements:
     if(element.text == "123456")
          element.send_keys(Keys.RETURN)

我选择这条路线显然是因为href标签,但它告诉我它在页面上找不到元素。我认为这是因为页面正在查询数据库并将其填充到容器中。

Butttt....出于寻找它的纯粹动力,我采用了在 https://selenium-python.readthedocs.io/api.html# 上找到的额外 find_elements 选项并打印出可用的 .text 段但无法找到它.

欢迎提出任何想法。这是我第一次在网站上发帖,所以我希望我没有错过任何东西。

这是我试图定位的字段的图像,它是一个搜索响应:

搜索字段容器响应

为了展示,这里是 CSS 找到其他条目而不是“123456”的响应

CSS_Selector响应

添加了显示搜索元素的结果的屏幕截图

找到元素@JeffC 的屏幕截图

所需的元素是一个 JavaScript 启用的元素,因此要在该元素上调用 click(),您必须为 引入 WebDriverWait ]元素可点击,您可以使用以下解决方案:

  • 使用XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@onclick,'AssignedAssetsUpdateContainer') and normalize-space()='123456']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC