SeleniumUnable在循环的第二次迭代中找到元素[Python]

2024-09-26 18:15:07 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我一直在研究selenium的一些自动化,并决定加入一个循环来检查存储在数组中的参与方列表。for循环搜索参与方并单击显示参与方信息的元素,然后返回到搜索栏并再次循环。在

在第一次迭代中,一切都按预期工作。但我的问题是在第二次迭代中,我无法找到在搜索成功后单击该元素的元素。我想这可能与Iframe有关,但我不相信。也许我的代码有一些我不知道的错误,但是您的帮助将不胜感激:)

不介意sleep函数,我只是暂时使用它(在所有功能正常后将切换为显式等待)

为了提供更多的信息:如果我在数组的任何索引处启动循环,第一个循环总是成功的,这意味着按标题查找元素对每个参与方都有效。在

for x in range(0, party_length):
    CRM_driver.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)='Cases'])[1]/following::span[6]").click()
    CRM_driver.find_element_by_id("search").click()
    CRM_driver.find_element_by_id("search").clear()
    CRM_driver.find_element_by_id("search").send_keys(party[x].party_name)
    time.sleep(2)
    CRM_driver.find_element_by_xpath('//*[@id="findCriteriaButton"]').click()

    # Changes the iFrame to inspect CRM elements
    time.sleep(5)
    iFrame = CRM_driver.find_element_by_xpath('//*[@id="contentIFrame1"]')
    CRM_driver.switch_to.frame(iFrame)
    print(iFrame)

    CRM_driver.find_element_by_xpath('//*[@title = "' + party[x].party_name + '"]').click()

    #returns to default IFrame and main page
    CRM_driver.switch_to.default_content()
    CRM_driver.find_element_by_id('navTabLogoTextId').click()
    time.sleep(2)

预期:搜索成功->;能够单击元素以显示参与方状态->;返回主屏幕->;重复

实际结果:搜索成功->;找不到元素(在第二次迭代中)


Tags: togtid元素bypartydriversleep

热门问题