2016-07-12 320 views
0

在Python3使用Selenium选择一个单选按钮 image here。下面是我用来选择单选按钮的代码,但它不起作用。硒选择单选按钮

emailElem = browser.find_element_by_class_name('SSR_DUMMY_RECV1$sels$0') 
    emailElem.click() 
+0

“不起作用”是什么意思?程序崩溃了吗?你有错误信息吗?它是否点击错误的元素? –

+0

@BryanOakley很抱歉的不确定性,我得到这样 ./fsu.py 回溯错误(最后最近一次调用): 文件 “./fsu.py”,第20行,在 emailElem.click() AttributeError:'list'对象没有属性'click' – Carolyn

+0

如果你得到''list'对象没有属性点击',这听起来像你打电话'find_elements_by_whatever'(注意“s”)。这将返回一个元素列表而不是单个元素。你确定你在调用“find element_ *”而不是“find_elements_ *”吗?你能否通过编辑你的问题来显示确切的代码和确切的错误? –

回答

2

“类名”定位应该使用class属性来定位元素值,在这种情况下使用“的ID”或“按名称”,而不是:

emailElem = browser.find_element_by_id('SSR_DUMMY_RECV1$sels$0') 
emailElem = browser.find_element_by_name('SSR_DUMMY_RECV1$sels$0') 
+0

谢谢你的回复! 不幸的是我得到这个错误: 回溯(最近通话最后一个): 文件 “./fsu.py”,第20行,在 emailElem.click() AttributeError的: '名单' 对象有没有属性“点击' – Carolyn

+0

@ user6581117您正在使用'find_elements_by_ *',但需要使用'find_element_ *'方法 - 注意's'。 – alecxe

+0

谢谢你指出。我纠正了它,但仍然继续收到此错误。 'selenium.common.exceptions.NoSuchElementException:消息:找不到元素:{ “方法”: “名字”, “选择”: “SSR_DUMMY_RECV1 $ SELS $ 0”}' – Carolyn

0

只需添加alecxe的答案更多一点。

你需要确保其idname是唯一的。

如果不是唯一的,你可以到find by方法,例如增加更多的属性

emailElem = browser.find_element_by_css_selector("input[id='SSR_DUMMY_RECV1$sels$0'][class=''PSRADIOBUTTON][type='radio']") 

您使用的属性越多,定位唯一元素的可能性就越大。

+0

感谢您回复! 不幸的是我不断收到此错误 提高exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions。InvalidSelectorException:消息:给定的选择器输入[id ='SSR_DUMMY_RECV1 $ sels $ 0'] [class =''PSRADIOBUTTON] [type ='radio']无效或不导致WebElement。发生以下错误: InvalidSelectorError:指定了无效或非法的选择器 – Carolyn

0

根据意见,原来的问题,你要求你收到此错误:

Traceback (most recent call last): 
    File "./fsu.py", line 20, in <module> 
    emailElem.click() 
AttributeError: 'list' object has no attribute 'click' 

这听起来像是你打电话的get_elements_*功能之一,而不是get_element_*(注意是复数elements)。

错误信息中包含大量信息,需要从字面上理解。你的错误信息告诉你一个列表没有一个click方法,这是真的。读取行之间的意思是,即使您认为它是一个元素,您调用.click()的对象也是一个列表。

+0

非常感谢你@Bryan Oakley!有什么办法可以选择它吗?从[Selenium Docs](http://selenium-python.readthedocs.io/api.html?highlight=radio#selenium.webdriver.remote.webelement.WebElement.is_selected)我收集它必须是'is_selected()'但我不知道如何实现 – Carolyn

+0

@ user6581117:请问您的问题如下? http://stackoverflow.com/q/21322116/7432 –

+0

'selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:{“method”:“css selector”,“selector”:“input [type ='收音机']“}'我尝试了几个答案,但似乎没有工作,我仍然得到这个错误的类似变化。 – Carolyn