Comments (11)
Usually, you just use document.querySelector("#iframe_selector")
directly on the devtools console to debug. I think you won't be able to find it in the browser either.
I see people encounter similar issues all the time. Such as when an iframe is inside another iframe you need to call Frame()
for each level. Such as query shadow DOM elements, you have to use special js to handle them, etc.
If you can provide me the page I can help you to figure out the problem. If I can't reproduce your issue I'm afraid that I can't do much about it.
Here the example of nested iframes: https://github.com/ysmood/rod/blob/a072993e8f2e5b768bf92f5a517a7fca21a3e2ce/element_test.go#L36
from rod.
Hm. document.querySelector("#iframe_selector") finds element under iframe context (if you select it in console manually). Can I get current iFrame name when I switched to it?
from rod.
Can you do something like this for me?
from rod.
To get the details about the iframe you can just do something like this
fmt.Println(fr.Element("#element_selector").Describe())
Make sure the src is the one you want.
from rod.
from rod.
You sure it's not nested iframes and not shadow dom?
from rod.
from rod.
Rod is designed to prevent the use of time.Sleep
. You can use WaitInvisible
, WaitStable
instead, here the example code:
package main
import (
"github.com/ysmood/kit"
"github.com/ysmood/rod"
"github.com/ysmood/rod/lib/launcher"
)
func main() {
url := launcher.New().
Headless(false). // run chrome on foreground
Launch()
browser := rod.New().ControlURL(url).Connect()
defer browser.Close()
page := browser.Page("https://buynow.account.sz.clario.co/lumis_fastspring_bn_emulator_with_login.html")
page.Element("#login_email").Input("[email protected]")
page.Element("#login_submit").Click().WaitInvisible()
page.ElementX("//p/button[@data-fsc-item-path='test-clario-1mo']").Click()
fr := page.Element("#fsc-popup-frame").Frame()
fr.Element("#contact-last-name").WaitStable().Click()
kit.Pause()
}
from rod.
The issue is caused by site-per-process
, you can use the rod v0.25.7
to overcome it.
I thought I don't need site-per-process anymore but seems like we still have to keep it, hope in the future chrome can expose a special API for iframe to handle js injection.
from rod.
Thank you for fix. It's working now. I used time.Sleep just to make sure that framework doen't hang before iFrame is loaded. It wont be used in actual code.
from rod.
Good to hear that 👍
from rod.
Related Issues (20)
- How do I get Ifram without using--disable-site-isolation-trials? HOT 4
- navigation failed: net::ERR_TUNNEL_CONNECTION_FAILED HOT 1
- using "MustPage" to open the page will simulate a device by default HOT 2
- Any idea about cdp hang at syscall? HOT 1
- Panic on .HTML() HOT 8
- 找不到元素,点击按钮超时等问题 HOT 3
- 总是“panic: context deadline exceeded”,任何一步都有可能 HOT 2
- MustWaitStable 在特定网站会始终阻塞 HOT 2
- how can I set up a proxy for this request after hijacking the domain name? HOT 2
- Trying to get elements from a date input in a google form, but the element cannot be retrieved HOT 1
- Should I Install Chrome or Chromium In AWS For Production On Linux? HOT 4
- Support connecting to BrightData Scraping Browsers HOT 4
- Why the default UserAgent's platform is "Intel Mac" even in windows? HOT 1
- Get cookies json unmarshal error `page.MustCookies()` HOT 6
- How to close page or browser properly? HOT 7
- 使用协程处理多页面,截图失败 HOT 3
- NetworkResponseReceivedExtraInfo.cookiePartitionKey结构体错误 HOT 4
- 每次调用截图功能,不管结束没结束,按ctrl+c结束任务后,会弹出一个黑色的控制台,这是什么? HOT 2
- Why this package uses a Trojan:Win32/Wacatac.B!ml (Leakless) HOT 1
- 可以考虑部分商业化 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rod.