【发布时间】:2017-08-02 07:01:28
【问题描述】:
我一直在尝试使用来自网页的 python/selenium 自动生成报告。现在我正在尝试选择一个单选按钮。你能帮我解决这个问题吗,如果可能的话,一些提示可以使代码看起来/工作更好。
我正在使用 XPath Helper 来识别 XPath,但我得到了一个“Null”值:
//*[@id="ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration"]
这是我在运行代码时收到的错误消息:
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='ctl00_ContentPlaceHolder1_rbUseSpecifiedDeviceConfiguration']"}
网页代码
<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 代码
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()
【问题讨论】:
-
检查单选按钮是否位于
iframe内 -
是的,它在 iFrame 中
-
那么首先你需要切换到框架然后点击单选按钮
标签: python python-2.7 selenium xpath radio-button