首页 > 解决方案 > 以前可以点击的元素现在不能点击了?

问题描述

因此,我制作了一个程序,在您登录后通过输入帐号来搜索帐户数据库。现在它在第一个循环中完美运行,但是当我输入下一个帐号时出现异常错误元素不可点击的地方。现在我知道它是可点击的,因为它在第一个循环中运行良好,发生了什么?

这是代码块:


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from bs4 import BeautifulSoup
import lxml
import time
import requests
import re
import csv
from tkinter import *

driver = webdriver.Chrome()

driver.switch_to.default_content()
    driver.switch_to.frame("ifrmContent")

    action = ActionChains(driver)
    Activity = action.move_to_element(driver.find_element_by_xpath("//*[@id='divMenu23']")).perform()
    time.sleep(0.5)
    ActImpct = action.move_to_element(driver.find_element_by_xpath("//*[@id='divMenu266']")).perform()
    time.sleep(0.5)
    ClickImpct = driver.find_element_by_xpath("//*[@id='divMenu266']").click()

    driver.switch_to.default_content()

    ImpctBalance = driver.find_element_by_css_selector('[src*="impactingActivities"]')
    driver.switch_to.frame(ImpctBalance)
    print("\n")

    try:
        wait = WebDriverWait(driver, 0.5)
        Row3 = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@id='tblDetails']/tbody/tr[3]")))
        print("ACTIVITY IMPACTING BALANCE, REVIEW NEEDED")
        print("\n")
    except:
        print("No Activity Impacting Balance")
        print("\n")


    wait = WebDriverWait(driver, 10)
    wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id='tblButtonBar2']/input")))
    driver.find_element_by_xpath("//*[@id='tblButtonBar2']/input").click()

我不怀疑这是一个框架问题,因为它仍然会从它显示的表格中抓取信息。我尝试添加隐式等待和一些时间延迟以使其有时间加载(尽管这在第一次运行时不是问题)只是为了看看这是否有帮助,但它没有。

我得到的错误是程序的最后一行:

selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable

任何帮助将非常感激!

编辑:我认为这实际上是一个框架问题,即使由于某种原因该框架的 CSS 选择器是相同的,它也无法访问该框架内的元素。之前有一个类似的问题,对于每个新的弹出窗口,该框架的数量都会改变,但原来的仍然存在,所以它从来没有说它找不到框架。可能在这里被搞砸了。

标签: pythonselenium

解决方案


推荐阅读