Selenium get textarea error

时间:2016-02-12 12:08:09

标签: python selenium selenium-webdriver

我正试图在使用Selenium和Python的网站上废弃,我被网站上的一个名为“textarea”的字段搞砸了。这就是网站HTML调用我试图提取文本的区域的方式:

<textarea class="script" onclick="this.focus();this.select()" readonly="readonly" id="script">

此代码出现后,我想要的文本。这是我正在使用的代码:

getCode = driver.find_elements_by_tag_name('textarea')

我的问题是它无法通过以下代码识别文本:

getCode.submit()
getCode.click()  
getCode.text()

这是我一直得到的代码错误:

  

追踪(最近的呼叫最后):
    在模块
中的文件“ScprL.py”,第55行       print(repr(getCode.text))
  AttributeError:'list'对象没有属性'text'

我会帮助你!

3 个答案:

答案 0 :(得分:1)

您应该使用driver.find_element_by_tag_name代替

使用driver.find_elements时,您会获得一份webElements列表。您应该从列表中提取元素

elem = driver.find_elements_by_tag_name('textarea')[0]
print element.text

如果页面上有多个textareas,那么你应该尝试找到你需要的那个,如下所示

textareas = driver.find_elements_by_tag_name('textarea')
for i, textarea in enumerate(textareas):
    print '{} is at index {}'.format(textarea.text, i)

然后使用适当的i值获取textareas[i]

答案 1 :(得分:1)

当您使用驱动程序。 find_elements _by_tag_name(&#39; textarea&#39;)时,它将检索网络元素列表。需要收集这些Web元素然后逐个迭代,然后获取每个web元素的文本。下面是java中的例子,

List<WebElement> ButtonNamelist =   driver.findElements(By.cssSelector(".locatorHere"));

 System.out.println(ButtonNamelist.size());

  for(int i=0;i<ButtonNamelist.size();i++){

 System.out.println(ButtonNamelist.get(i).getText());

}

谢谢你, 穆拉利

答案 2 :(得分:0)

selenium中每个定位器有两个函数:“find_element s ”和“find_element”。区别很简单:第一个返回满足选择器的元素列表,第二个返回第一个找到的元素。您可以阅读有关定位元素here的更多信息。

因此,您需要将功能更改为find_element_by_tag_name或从列表中检索第一个元素:find_element_by_tag_name()[0]