【问题标题】:Selenium- Selecting Radio Button [closed]Selenium-选择单选按钮[关闭]
【发布时间】:2016-07-12 19:32:08
【问题描述】:

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

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

【问题讨论】:

  • “不起作用”是什么意思?程序会崩溃吗?您收到错误消息吗?它是否点击了错误的元素?
  • @BryanOakley 抱歉含糊不清,我收到类似这样的错误 ./fsu.py Traceback(最近一次调用最后一次):文件“./fsu.py”,第 20 行,在 emailElem .click() AttributeError: 'list' 对象没有属性 'click'
  • 如果你得到“'list' object has no attribute click”,听起来你在调用'find_elements_by_whatever'(注意“s”)。这将返回一个元素列表而不是单个元素。你确定你调用的是“find element_”而不是“find_elements_”吗?您能否通过编辑您的问题来显示确切的代码和确切的错误?

标签: python python-3.x selenium selenium-webdriver


【解决方案1】:

“按类名”定位器应该用于按类属性值定位元素,在这种情况下使用“按id”或“按名称”代替:

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

【讨论】:

  • 感谢您的回复!不幸的是,我收到了这个错误: Traceback (last recent call last): File "./fsu.py", line 20, in emailElem.click() AttributeError: 'list' object has no attribute 'click'
  • @user6581117 你正在使用find_elements_by_* 但需要使用find_element_* 方法 - 观看s
  • 感谢您指出这一点。我更正了它,但仍然继续收到此错误。 'selenium.common.exceptions.NoSuchElementException: 消息:无法定位元素:{"method":"name","selector":"SSR_DUMMY_RECV1$sels$0"}'
【解决方案2】:

只需在 alecxe 的答案中添加更多内容。

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

如果它们不是唯一的,您可以在find by 方法中添加更多属性,例如

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

你使用的属性越多,你就越有可能找到一个独特的元素。

【讨论】:

  • 感谢您的回复!不幸的是,我继续收到此错误 raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidSelectorException: Message: The given selector input[id='SSR_DUMMY_RECV1$sels$0'][class=''PSRADIOBUTTON][type= 'radio'] 无效或不会生成 WebElement。发生以下错误:InvalidSelectorError:指定了无效或非法的选择器
【解决方案3】:

根据原始问题的 cmets,您声称您收到此错误:

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() 的对象是一个列表,即使您认为它是一个元素。

【讨论】:

  • 非常感谢@Bryan Oakley!有什么方法可以选择吗?从Selenium Docs 我推测它一定是is_selected() 但我不知道如何实现
  • @user6581117:以下是否回答了您的问题? stackoverflow.com/q/21322116/7432
  • selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"css selector","selector":"input[type='radio']"} 我尝试了几个答案,但似乎没有一个有效,并且我继续收到此错误的类似变体。
  • 在某一时刻也收到此错误emailElem = browser.find_elements_by_css_selector("input[type='radio'][value='SSR_DUMMY_RECV1$sels$0']")[0] IndexError: list index out of range,但更改索引也没有解决它。不过,我非常感谢您的帮助:)
猜你喜欢
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2016-11-14
  • 2019-05-04
  • 2018-08-04
  • 1970-01-01
相关资源
最近更新 更多