当前位置: 首页 > 知识库问答 >
问题:

Python Selenium在使用Firefox浏览器切换到框架后无法定位元素

狄冥夜
2023-03-14

切换到正确的框架后,我无法定位框架内的元素。这里是我的代码,错误和HTML索尔斯。如果右键单击框架并选择This frame->只显示此框架,那么我就可以在default_content中找到元素,但是我需要在没有This frame的情况下找到它

browser.switch_to.default_content()  

browser.switch_to.frame(browser.find_element_by_id('DialogFrame'))

browser.find_element_by_css_selector('#_ctl12_btnExportCSV')

错误StackTrace:

NoSuchElementException Traceback(最近的调用最后)在-->1 browser.find_element_by_css_selector('#_ctl12_btnexportcsv')中

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self,by,value)974 by=by.css_selector 975 value='[name=“%s”]'%value-->976 return self.execute(command.find_element,{977'using':by,978'value':value})['value']

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py中的execute(self,driver_command,params)319 response=self.command_executor.execute(driver_command,params)320如果response:-->321 self.error_handler.check_response(response)322 response['value']=self._unwrap_value(323 response.get('value',

~\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self,response)240 alert_text=value['alert'].get('text')241 raise exception_class(message,screen,stacktrace,alert_text)-->242 raise exception_class(message,screen,stacktrace)243 244 def_value_or_default(self,obj,key,default

NoSuChelementException:消息:无法找到元素:#_CTL12_BTNEXPORTCSV

HTML:

共有1个答案

姚骁
2023-03-14

诱导webdriverwait()并等待frame_to_be_available_and_switch_to_it()

诱导webdriverwait()并等待element_to_be_clickable()

WebDriverWait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'DialogFrame')))
inptelement=WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#_ctl12_btnExportCSV')))

您需要导入下面的库。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
 类似资料:
  • 你好,有帮助的硒窗口和框架切换的家伙(或女孩),

  • 问题内容: 我创建了一个小的屏幕抓取器,并且一切似乎都运行良好,信息被提取并保存在数据库中。我唯一遇到的问题是有时Python不使用,因此它尝试在错误的页面上获取信息并崩溃。我尝试添加一个,但有时仍然无法正常工作。我正在尝试对其进行优化,以尽可能减少时间。因此,使其hibernate30秒似乎不是一个好的解决方案。 问题答案: 这是最好的解决方案。不能保证back()和forward()方法有效。

  • ![Frame Details][firebug正确显示了帧,但无法切换到帧]1 我正在尝试切换到id =所有设备的框架,但无法到达那里。我可以切换到任何其他框架,但不能切换到这个框架。以下是我尝试过的选项 browser.driver.switchTo(). frame('所有设备');browser.driver.switchTo(). frame(browser.driver.findEle

  • 问题内容: 我在Ubuntu Desktop 16.04上使用Selenium WebDriver,但无法打开浏览器。Firefox更新后出现以下错误(在此之前,所有方法都可以正常工作): 问题答案: 修正 :目前的解决方案是降级Firefox!运行此命令以获取可用Firefox版本的列表。 我的结果: 安装: 要保留此版本并禁止更新:

  • 我在Ubuntu桌面16.04上使用Selenium WebDriver,无法打开浏览器。在Firefox更新之后,我出现了以下错误(在此之前,一切都正常):

  • 我已经通过命令行java-jar Jenkins.war启动了Jenkins服务器。但是,当我尝试执行Jenkins参数化作业(maven测试)时,firefox会打开片刻,然后立即关闭。 如果我使用chrome浏览器,它在Jenkins的工作很好。 注意:同样的测试在火狐和chrome浏览器上执行得很好。