Iterate Chrome page variable buttons
Moderators: Dorian (MJT support), JRL
-
- Pro Scripter
- Posts: 90
- Joined: Fri Jan 31, 2020 10:52 am
Iterate Chrome page variable buttons
Hi! Hope you can help me with this problem!
In "Related content" page there is a variable "ressource-list" content.
In this exemple there is 4. For other webcast it could be 2 or 3 or none.
https://u.pcloud.link/publink/show?code ... aw7mS6Xhtk
When there is a list, for each ressource, a detail button is display. When
it is clicked a page report is displayed and the download of an excel file
is available.
https://u.pcloud.link/publink/show?code ... bfwmVGlu1y
I want to access to all excel files and download them.
How to find the xpath of each ressource button?
So from there I can automate the rest of the script and download each xl file?
HTML of the ressource report bloc.
https://u.pcloud.link/publink/show?code ... 6UCSeneHMk
Thank you so much for your help!
In "Related content" page there is a variable "ressource-list" content.
In this exemple there is 4. For other webcast it could be 2 or 3 or none.
https://u.pcloud.link/publink/show?code ... aw7mS6Xhtk
When there is a list, for each ressource, a detail button is display. When
it is clicked a page report is displayed and the download of an excel file
is available.
https://u.pcloud.link/publink/show?code ... bfwmVGlu1y
I want to access to all excel files and download them.
How to find the xpath of each ressource button?
So from there I can automate the rest of the script and download each xl file?
HTML of the ressource report bloc.
https://u.pcloud.link/publink/show?code ... 6UCSeneHMk
Thank you so much for your help!
- Dorian (MJT support)
- Automation Wizard
- Posts: 1389
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Iterate Chrome page variable buttons
This should work :
Code: Select all
ChromeFindElements>session_id,xpath,//span[@class='btn-link'],el
if>el_count>0
//click loop
let>clickloop=0
repeat>clickloop
let>clickloop=clickloop+1
let>element=el_%clickloop%
ChromeElementAction>session_id,element,click
Until>clickloop,el_count
else>elements not found
endif
Yes, we have a Custom Scripting Service. Message me or go here
-
- Pro Scripter
- Posts: 90
- Joined: Fri Jan 31, 2020 10:52 am
Re: Iterate Chrome page variable buttons
Thank you Dorian for your help!
Unfortunately this code does not work.
Regardless of the strategy used, XPath, Class Name nothing does.
Thank you again!
Unfortunately this code does not work.
Regardless of the strategy used, XPath, Class Name nothing does.
Thank you again!
- Dorian (MJT support)
- Automation Wizard
- Posts: 1389
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Iterate Chrome page variable buttons
Then investigate to see if it's in a frame. I tested my code and it found the elements without issue.
Yes, we have a Custom Scripting Service. Message me or go here
-
- Pro Scripter
- Posts: 90
- Joined: Fri Jan 31, 2020 10:52 am
Re: Iterate Chrome page variable buttons
Thank you for your answer.
I guess you are right, there is frames. In the page code it is ref to container.
As new in this, I will try to master one thing first and it is to select a menu item called Interactions in left menu
of this page. I will try after to go on with other task like ckicking those detail buttons.
Here's the screen capture.
https://u.pcloud.link/publink/show?code ... VnDHzdLB2k
And here's the piece of code. But when I run it res=0 but the nothing happen after.
Can you tell me what is wrong with those instructions?
Thank you so much for your help.
I guess you are right, there is frames. In the page code it is ref to container.
As new in this, I will try to master one thing first and it is to select a menu item called Interactions in left menu
of this page. I will try after to go on with other task like ckicking those detail buttons.
Here's the screen capture.
https://u.pcloud.link/publink/show?code ... VnDHzdLB2k
And here's the piece of code. But when I run it res=0 but the nothing happen after.
Code: Select all
//Find the frame
ChromeFindElements>session_id,xpath,//SCRIPT[@src='_SupportFiles/common.js'],elements
//switch to the first frame
ChromeSwitchFrame>session_id,element,elements_3,res
//now anything we do is inside that frame
ChromeFindElements>session_id,xpath,//span[@id='interactions-label'],lblInteractions
ChromeElementAction>session_id,lblInteractions_1,click
Thank you so much for your help.
- Dorian (MJT support)
- Automation Wizard
- Posts: 1389
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Iterate Chrome page variable buttons
If you're trying to click on the part you've highlighted shouldn't you be using div, id, and interactions-main-menu-item.
Also are you sure elements_3 is the correct frame?
Apologies for the oddly formatted reply, I'm answering from my phone.
Also are you sure elements_3 is the correct frame?
Apologies for the oddly formatted reply, I'm answering from my phone.
Yes, we have a Custom Scripting Service. Message me or go here
-
- Pro Scripter
- Posts: 90
- Joined: Fri Jan 31, 2020 10:52 am
Re: Iterate Chrome page variable buttons
Thank you for your answer Dorian!
I did adjust the instructions. Here's a capture of it.
https://u.pcloud.link/publink/show?code ... ACpmdoo4hX
The lblInteractions result = 0.
Thank you so much for your help!
I did adjust the instructions. Here's a capture of it.
https://u.pcloud.link/publink/show?code ... ACpmdoo4hX
The lblInteractions result = 0.
Thank you so much for your help!
- Dorian (MJT support)
- Automation Wizard
- Posts: 1389
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Iterate Chrome page variable buttons
Can you post the HTML as well as the photos. Tech support with screenshots can be less than ideal at times. Just pasting it as code here is fine. That html document you uploaded further up this thread didn't seem to work.
Yes, we have a Custom Scripting Service. Message me or go here
-
- Pro Scripter
- Posts: 90
- Joined: Fri Jan 31, 2020 10:52 am
Re: Iterate Chrome page variable buttons
Thank you for your reply Dorian!
Here's a piece of the code behind this frame.
https://u.pcloud.link/publink/show?code ... L2J0Krh9RV
And the page photo.
https://u.pcloud.link/publink/show?code ... sBxXSlM237
Thank you for you help!
Here's a piece of the code behind this frame.
https://u.pcloud.link/publink/show?code ... L2J0Krh9RV
And the page photo.
https://u.pcloud.link/publink/show?code ... sBxXSlM237
Thank you for you help!
- Dorian (MJT support)
- Automation Wizard
- Posts: 1389
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Iterate Chrome page variable buttons
I used :
..and lblInteractions_count was 1.
But of course we can probably expect that because the html we're using is already working with the correct frame - it's simply the contents of the frame.
So this leads me to believe you're not switching to the correct frame. When you switch frame using elements_3 your result of 0 is showing you've successfully switched frame - but that doesn't mean it's the correct frame.
This looks odd to me : //SCRIPT[@src='_SupportFiles/common.js']
Shouldn't the tag be "FRAME" OR "IFRAME" ?
I'm happy to look at this for you if you can send the access credentials for this to us at support.
Code: Select all
ChromeFindElements>session_id,xpath,//span[@id='interactions-label'],lblInteractions
But of course we can probably expect that because the html we're using is already working with the correct frame - it's simply the contents of the frame.
So this leads me to believe you're not switching to the correct frame. When you switch frame using elements_3 your result of 0 is showing you've successfully switched frame - but that doesn't mean it's the correct frame.
This looks odd to me : //SCRIPT[@src='_SupportFiles/common.js']
Shouldn't the tag be "FRAME" OR "IFRAME" ?
I'm happy to look at this for you if you can send the access credentials for this to us at support.
Yes, we have a Custom Scripting Service. Message me or go here
- Dorian (MJT support)
- Automation Wizard
- Posts: 1389
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Iterate Chrome page variable buttons
You can also switch frame by index. This may be easier. You can even loop through all the frames looking for your element. This will loop through the frames and tell you which frame it finds your element. It stops at 100 frames so it's not an endless loop. If it finds the element it will construct the correct ChromeSwitchFrame code for you.
This should work for any site, all you need to do is edit the ChromeFindElements line accordingly.
This should work for any site, all you need to do is edit the ChromeFindElements line accordingly.
Code: Select all
Let>el_count=0
Let>LoopCount=0
While>el_count=0
Let>LoopCount=LoopCount+1
//Switch frame
ChromeSwitchFrame>session_id,index,LoopCount,res
//Look for this element :
ChromeFindElements>session_id,xpath,//span[@id='interactions-label'],el
//Switch back
ChromeSwitchFrame>session_id,index,null,res
If>el_count>0
MDL>element found in frame %LoopCount%.%CRLF%%CRLF%Use :%CRLF%%CRLF%ChromeSwitchFrame>session_id,index,%LoopCount%,res%CRLF%%CRLF%This has been copied to clipboard
Let>ScriptLine=ChromeSwitchFrame>session_id,index,%LoopCount%,res
Put>ScriptLine
Exit
Endif
if>LoopCount>100
mdl>Searched 100 frames and didn't find it
Exit
Endif
Endwhile
Yes, we have a Custom Scripting Service. Message me or go here
-
- Pro Scripter
- Posts: 90
- Joined: Fri Jan 31, 2020 10:52 am
Re: Iterate Chrome page variable buttons
Thank you Dorian for your help!
I sent a PM message. Can you confirm reception?
Thank you!
I sent a PM message. Can you confirm reception?
Thank you!
- Dorian (MJT support)
- Automation Wizard
- Posts: 1389
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Iterate Chrome page variable buttons
Mystery solved.
The item in question was in a new tab that had been opened by a previous button click. It was also in a frame.
So the solution was to switch focus and then switch frames. Index,0 was the solution there.
The item in question was in a new tab that had been opened by a previous button click. It was also in a frame.
So the solution was to switch focus and then switch frames. Index,0 was the solution there.
Code: Select all
ChromeSwitchFrame>session_id,index,0,a1
ChromeFindElements>session_id,xpath,//div[@id='interactions-main-menu-item'],lbl1
ChromeElementAction>session_id,lbl1_1,click
Yes, we have a Custom Scripting Service. Message me or go here
-
- Pro Scripter
- Posts: 90
- Joined: Fri Jan 31, 2020 10:52 am
Re: Iterate Chrome page variable buttons
Hi Dorian and thank you so much for your help.
I have run your solution with success.
Have a great day and sorry I couldn't get back with a response before today.
I have run your solution with success.
Have a great day and sorry I couldn't get back with a response before today.