我没有使用find_elements就无法访问webelement

时间:2017-12-05 10:23:37

标签: python selenium

paymentNumber = driver.find_elements_by_xpath('.//*[@id="search"]') 
paymentNumber.send_keys(check_number)

但是当它返回一个列表时,我无法将值发送到文本框。已经尝试使用find_element_by_xpath(''),它只是通过引发异常崩溃:引发exception_class(消息,屏幕,堆栈跟踪):无法找到webelement

  

错误:文件

     

第53行,在downloadFile中       paymentNumber.send_keys(check_number)AttributeError :(“'list'对象没有属性'send_keys'”,u'occurred在索引0')

2 个答案:

答案 0 :(得分:2)

鉴于您使用相同的Xpath表达式,很难相信

find_element_by_xpath

的行为与

不同
find_elements_by_xpath

最有可能的是, Xpath表达式错误且未找到任何元素。使用find_elements_by_xpath检索空列表,因此在第一个元素上调用任何内容都不起作用。

更改您的Xpath表达式,使其与您要使用的元素匹配。添加一些日志记录或在使用之前检查元素列表的大小。

答案 1 :(得分:1)

您看到错误AttributeError: ("'list' object has no attribute 'send_keys'", u'occurred at index 0')的原因是,您使用 find_elements_by_xpath 方法返回 List

我们无法在 send_keys 上调用 List 方法,但我们可以调用 send_keys 个人 WebElement 的方法。

因此解决方案是使用 find_element_* 方法。您可以使用以下任一代码块:

  • 使用 find_element_by_id

    paymentNumber = driver.find_element_by_id("search") 
    paymentNumber.send_keys(check_number)
    
  • 使用 find_element_by_xpath

    paymentNumber = driver.find_element_by_xpath("//*[@id='search']") 
    paymentNumber.send_keys(check_number)