Skip to main content

VBA & Selenium | Access iframe within HTML containing #document

I am trying to access the HTML within two iframes using Selenium Basic in VBA, as IE has been blocked on our machines, and Python, etc. are not available to us.

Previously I could access the html with this:

Dim IE As InternetExplorerMedium
Set IE = New InternetExplorerMedium

' actual website excluded as it is a work hosted website which requires login, etc.
website = "..."
IE.navigate (website)

Dim IEDocument As HTMLDocument
Set IEDocument = IE.document.getElementById(id1).contentDocument.getElementById(id2).contentDocument

From there I would have access to all the HTML elements which I could work with.

Now I am trying the following with Selenium Basic:

Set cd = New Selenium.ChromeDriver
website = "..."

cd.Start baseUrl:=website

cd.Get "/"
Dim af1 As Selenium.WebElement, af2 As Selenium.WebElement
Set af1 = cd.FindElementById("CRMApplicationFrame")
Set af2 = af1.FindElementById("WorkAreaFrame1")

It works up to the last line, as it is able to set af to the "CRMApplicationFrame" id; however, I am unable to get inside of it.

I think the solution lies in executing a bit of JavaScript, similar to as in this video: https://www.youtube.com/watch?v=phYGCGXGtEw

Although I don't have a #ShadowDOM line, I do have a #document line.

Based on and trying to adapt the video I have tried the following:

Set af2 = cd.ExecuteScript(Script:="return arguments[0].contentDocument", arguments:=af1 )

However, that did not work.

I also tested:

Dim af1 As Selenium.WebElement
Set af1 = cd.FindElementById("CRMApplicationFrame")
call cd.SwitchToFrame (af1)

Debug.Print cd.PageSource

However, the SwitchToFrame line won't execute, with a 438 error: Object doesn't support this property or method.

Any advice or guidance on how I could succeed would be highly appreciated!

Via Active questions tagged javascript - Stack Overflow https://ift.tt/DKUaEm3

Comments

Popular posts from this blog

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to split a rinex file if I need 24 hours data

Trying to divide rinex file using the command gfzrnx but getting this error. While doing that getting this error msg 'gfzrnx' is not recognized as an internal or external command Trying to split rinex file using the command gfzrnx. also install'gfzrnx'. my doubt is I need to run this program in 'gfzrnx' or in 'cmdprompt'. I am expecting a rinex file with 24 hrs or 1 day data.I Have 48 hrs data in RINEX format. Please help me to solve this issue. source https://stackoverflow.com/questions/75385367/how-to-split-a-rinex-file-if-i-need-24-hours-data