1

I've been trying to automatize a report with python/selenium from a webpage. Right now I'm stock trying to select a radio button. Could you please help me with this issue, and if is possible some tips to make the code look/work better.

I'm using XPath Helper to identify XPaths but I'm getting a "Null" value for this:

//*[@id="ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration"]

This is the error message that I get when I run the code:

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration']"}

webpage code

<div class="indent">
                    <div>
                        <input id="ctl00_ContentPlaceHolder1_rbUseDeviceDefaultConfigurations" type="radio" name="ctl00$ContentPlaceHolder1$gnConfigurationType" value="rbUseDeviceDefaultConfigurations" checked="checked"><label for="ctl00_ContentPlaceHolder1_rbUseDeviceDefaultConfigurations">Default Device Configurations</label>
                    </div>
                    <div>

                    </div>
                    <div>
                        <span class="hasValidation"><input id="ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration" type="radio" name="ctl00$ContentPlaceHolder1$gnConfigurationType" value="rbUseSpecifiedDeviceConfiguration" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$rbUseSpecifiedDeviceConfiguration\',\'\')', 0)"><label for="ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration">Specify Device Configuration...</label></span>
                    </div>
                    <div class="indent">

                    </div>
                    <div>

                    </div>
                    <div class="indent">

                    </div>
                </div>

Python code

import time
from selenium import webdriver
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.keys import Keys

#Opens Chrome driver and maximize window
driver = webdriver.Chrome('C:\Python27\selenium\webdriver\chrome\chromedriver.exe')
driver.maximize_window()

# Username and password for webpage
username = 'XXX'    #username to login in to web app
password = 'YYY'    #Password to login in to web app

# Gets webpage
driver.get('https://www.XXX-YYY.com/')

# Automatized script to get from main page to Trending
search_box = driver.find_element_by_xpath("//*[@id='_GlobalLoginControl_UserLogin']")   # Fills username textBox
search_box.send_keys(username)
search_box = driver.find_element_by_xpath("//*[@id='_GlobalLoginControl_Password']")    # Fills password textBox
search_box.send_keys(password)
search_box = driver.find_element_by_xpath("//*[@id='_GlobalLoginControl_LoginBtn']")    # Click login Button
search_box.click()
time.sleep(2)
search_box = driver.find_element_by_xpath("//*[@id='8:45']/ins")                        # treeBtn
search_box.click()
time.sleep(2)
search_box = driver.find_element_by_xpath("//*[@id='8:218']/ins")                       # treeBtn
search_box.click()
time.sleep(2)
search_box = driver.find_element_by_xpath("//*[@id='8:581']/ins")                       # Trending treeBtn
search_box.click()
time.sleep(2)
search_box = driver.find_element_by_xpath("//*[@id='a8:583']")                          # tag
search_box.click()
time.sleep(6)
search_box = driver.find_element_by_xpath("//*[@id='pageheading_menu_anchor']")             # Related pages dropDownList
search_box.click()
time.sleep(2)
search_box = driver.find_element_by_xpath("//*[@id='pageheading_menu_anchor_panel_s1_l4']")         # Quick trending tag
search_box.click()
time.sleep(6)
##############################
### My issue is below this ###
##############################
search_box = driver.find_element_xpath("//*[@id='ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration']")        # Specify Device Configuration radioBtn
search_box.click()
time.sleep(2)
search_box = driver.find_element_by_xpath("//*[@id='ctl00_ContentPlaceHolder1_DeviceTrendCfgSelector_ConfigurationListAnchor']/img")        # Select Configuration dropDownList
search_box.click()
time.sleep(2)
search_box = driver.find_element_by_xpath("//*[@id='ctl00_ContentPlaceHolder1_DeviceTrendCfgSelector_ConfigurationList']/div/a[3]")         # 4 lease operator with memos and choke size
search_box.click()
3
  • Check whether radio-button located inside an iframe Commented Mar 12, 2017 at 6:26
  • Yes it is in an iFrame Commented Mar 12, 2017 at 6:52
  • then first you need to switch into frame and then click on radio button Commented Mar 12, 2017 at 6:56

1 Answer 1

1

You should switch to iframe before handling radio-button:

driver.switch_to.frame(driver.find_element_by_tag_name('iframe'))
search_box = driver.find_element_xpath("//*[@id='ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration']")        # Specify Device Configuration radioBtn
search_box.click()
Sign up to request clarification or add additional context in comments.

3 Comments

Thanks for the info... It did not work :(... still looking for more info about iFrames... Thanks!
There might be more iframes on page. Share HTML for target iframe
I found the issue, I was using single quotation marks instead of double This was the right one driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.