利用chrome快速查找st中的组件

本文介绍如何使用Ext.ComponentQuery在ExtJS中查询组件,并通过控制器为这些组件绑定事件。具体包括按xtype和属性值查询组件的方法,以及如何在控制器中定义对应的事件处理函数。

利用xtype查询 

在chrome控制台中输入:Ext.ComponentQuery.query("button") 或者Ext.ComponentQuery.query(".button")


利用属性值查询

Ext.ComponentQuery.query("button[text=退出]")


查出之后,就可以在控制器中的refs进行引用,比如:button:"#ext-button-5",


然后在control为这个button定义事件。比如,

button:{

   tap:'exit' 

}



然后,实现exit这个函数

exit function(){

alert('我点击了退出按钮');

}

Traceback (most recent call last): File "D:\SAU\upload_video_to_tiktok.py", line 30, in <module> asyncio.run(app.main(), debug=False) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\asyncio\runners.py", line 195, in run return runner.run(main) ~~~~~~~~~~^^^^^^ File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\asyncio\base_events.py", line 719, in run_until_complete return future.result() ~~~~~~~~~~~~~^^ File "D:\SAU\uploader\tk_uploader\main_chrome.py", line 298, in main await self.upload(playwright) File "D:\SAU\uploader\tk_uploader\main_chrome.py", line 155, in upload await self.change_language(page) File "D:\SAU\uploader\tk_uploader\main_chrome.py", line 250, in change_language await page.locator('[data-e2e="nav-more-menu"]').click() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\playwright\async_api\_generated.py", line 15460, in click await self._impl_obj.click( ...<9 lines>... ) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\playwright\_impl\_locator.py", line 160, in click return await self._frame.click(self._selector, strict=True, **params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\playwright\_impl\_frame.py", line 488, in click await self._channel.send("click", locals_to_params(locals())) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\playwright\_impl\_connection.py", line 61, in send return await self._connection.wrap_api_call( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<2 lines>... ) ^ File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\playwright\_impl\_connection.py", line 528, in wrap_api_call raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None playwright._impl._errors.TimeoutError: Locator.click: Timeout 30000ms exceeded. Call log: - waiting for locator("[data-e2e=\"nav-more-menu\"]") - locator resolved to <button type="button" aria-label="更多" role="listitem" aria-pressed="false" aria-disabled="false" data-e2e="nav-more-menu" class="TUXButton TUXButton--default TUXButton--medium TUXButton--secondary css-19eo4dx-StyledTUXNavButton ej7on1p0">…</button> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - element is outside of the viewport - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - element is outside of the viewport - retrying click action - waiting 100ms 57 × waiting for element to be visible, enabled and stable - element is visible, enabled and stable - scrolling into view if needed - done scrolling - element is outside of the viewport - retrying click action - waiting 500ms
05-18
### Playwright 点击操作超时问题解决方案 当使用 Playwright 进行自动化测试时,如果遇到 `locator.click()` 超时错误(`TimeoutError`),通常是因为目标元素未能在指定时间内变得可交互。以下是几种可能的原因以及对应的解决方案: #### 1. 增加超时时间 默认情况下,Playwright 的超时时间为 30 秒。可以通过设置更大的超时参数来延长等待时间。 ```javascript await page.locator('button').click({ timeout: 5000 }); // 设置为 5 秒 ``` 这可以有效应对网络延迟或其他性能瓶颈的情况[^1]。 #### 2. 使用显式等待条件 有时页面上的某些动态加载可能会导致元素暂时不可见或无法点击。通过引入更精确的等待逻辑,可以提高稳定性。 ```javascript // 等待按钮变为可见状态后再执行点击动作 await page.waitForSelector('button', { state: 'visible' }); await page.locator('button').click(); ``` 此方法确保只有当目标元素完全呈现并准备好接受用户输入时才会触发点击事件[^2]。 #### 3. 处理异步加载组件 对于一些依赖于 JavaScript 动态渲染的内容,简单的选择器匹配可能不足以定位到最终形态下的 DOM 结构。此时需考虑采用更加复杂的查询策略或者监听特定属性变化作为判断依据之一。 ```javascript const button = await page.$eval('button', el => { return new Promise(resolve => setTimeout(() => resolve(el), 100)); }); if (button){ await button.click(); } ``` 这里利用 `$eval` 方法结合自定义函数实现延时处理机制,在实际应用过程中可根据具体需求调整内部逻辑[^3]。 #### 4. 验证 CSS Selectors/XPath 表达式的准确性 确认所使用的查找表达式能够唯一标识期望的操作对象非常重要。不恰当的选择可能导致框架找不到对应项目从而抛出异常提示信息。 建议先单独验证路径的有效性再集成至脚本当中运行调试: ```bash $ playwright codegen --target=js https://example.com/ ``` 借助官方提供的 Code Generator 工具可以帮助快速生成适配当前网页结构的标准代码片段[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值