我正试图在使用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'
我会帮助你!
答案 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]
。