对于想了解SeleniumWebdriver:如何找到元素的所有属性?的读者,本文将是一篇不可错过的文章,我们将详细介绍元素查找,并且为您提供关于AttributeError:“列表”对象没有属性“单
对于想了解Selenium Webdriver:如何找到元素的所有属性?的读者,本文将是一篇不可错过的文章,我们将详细介绍元素查找,并且为您提供关于AttributeError:“列表”对象没有属性“单击”-Selenium Webdriver、IntelliJ Java - Selenium webdriver 找不到元素 - 动态 ID、java – Selenium WebDriver无法通过链接文本找到元素、java – Selenium WebDriver:无法使用TinyMCE编辑器在iframe中找到元素的有价值信息。
本文目录一览:- Selenium Webdriver:如何找到元素的所有属性?(元素查找)
- AttributeError:“列表”对象没有属性“单击”-Selenium Webdriver
- IntelliJ Java - Selenium webdriver 找不到元素 - 动态 ID
- java – Selenium WebDriver无法通过链接文本找到元素
- java – Selenium WebDriver:无法使用TinyMCE编辑器在iframe中找到元素
Selenium Webdriver:如何找到元素的所有属性?(元素查找)
在Python Selenium模块中,一旦有了WebElement
对象,我可以使用以下命令获取其任何属性的值get_attribute()
:
foo = elem.get_attribute(''href'')
如果命名的属性''href''
不存在,None
则返回。
我的问题是,如何获取元素具有的所有属性的列表?似乎没有get_attributes()
或get_attribute_names()
方法。
我正在为Python使用Selenium模块的2.44.0版本。
答案1
小编典典这是 不可能的 使用硒webdriver的API,但你可以_执行JavaScript代码_来获取所有属性:
driver.execute_script(''var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;'', element)
演示:
>>> from selenium import webdriver>>> from pprint import pprint>>> driver = webdriver.Firefox()>>> driver.get(''https://stackoverflow.com'')>>> >>> element = driver.find_element_by_xpath(''//div[@]/a'')>>> attrs = driver.execute_script(''var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;'', element)>>> pprint(attrs){u''class'': u''topbar-icon icon-site-switcher yes-hover js-site-switcher-button js-gps-track'', u''data-gps-track'': u''site_switcher.show'', u''href'': u''//stackexchange.com'', u''title'': u''A list of all 132 Stack Exchange sites''}
为了完整起见,一种替代解决方案是获取标记outerHTML
并使用HTML解析器解析属性。示例(使用BeautifulSoup
):
>>> from bs4 import BeautifulSoup>>> html = element.get_attribute(''outerHTML'')>>> attrs = BeautifulSoup(html, ''html.parser'').a.attrs>>> pprint(attrs){u''class'': [u''topbar-icon'', u''icon-site-switcher'', u''yes-hover'', u''js-site-switcher-button'', u''js-gps-track''], u''data-gps-track'': u''site_switcher.show'', u''href'': u''//stackexchange.com'', u''title'': u''A list of all 132 Stack Exchange sites''}
AttributeError:“列表”对象没有属性“单击”-Selenium Webdriver
我正在尝试使用python在Selenium Webdriver中使用click命令。但是我收到以下错误。有人能帮我吗?
Traceback (most recent call last):File "C:\Users\vikram\workspace\LDC\test.py", line 13, in <module>driver.find_elements_by_link_text("MISCQA Misc Tests").click()AttributeError: ''list'' object has no attribute ''click''
这是我的程序
from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support.ui import WebDriverWaitimport configurl = config.config.get(''url'')driver = webdriver.Ie()driver.get(url)driver.find_elements_by_link_text("MISCQA Misc Tests").click()driver.close()
我想我缺少了一些东西。请建议我
答案1
小编典典感谢您的帮助。我为自己找到了答案。“ Dan Niero”给出的想法
问题是,我使用driver.find_element[s]
而不是driver.find_element
。因此,s会有所作为。实际上,我正在遵循Eclipse
:(。显然driver.find_elements_by_link_text
返回列表,因此如果我发送click事件,它将无法理解。
感谢您的帮助,对不起我的问题
-维克拉姆
IntelliJ Java - Selenium webdriver 找不到元素 - 动态 ID
如何解决IntelliJ Java - Selenium webdriver 找不到元素 - 动态 ID?
我是测试自动化的初学者,现在我正在尝试寻找一个元素。
元素看起来像:
<ahref="javascript:;" id="personalDataForm:j_idt2380" onblur="setFocus('''');" onclick="var form=formOf(this);form[''personalDataForm:j_idcl''].value=''personalDataForm:j_idt2380'';iceSubmit(form,this,event);form[''personalDataForm:j_idcl''].value='''';return false;" onfocus="setFocus(this.id);"><spanid="personalDataForm:j_idt2381"https://www.jb51.cc/tag/decoration/" target="_blank">decoration: underline;">van</span></a>
<spanid="personalDataForm:j_idt2381"https://www.jb51.cc/tag/decoration/" target="_blank">decoration: underline;">Click here</span>
个人数据表格:j_idt2381 ID动态变化:fix value->personalDataForm:j_idt动态数字->2381
尝试了几种解决方案:
webDriver.findElement(By.xpath("//td[3]/a/span")).click();
webDriver.findElement(By.xpath("//a[starts-with(@id,''personalDataForm:j_idt'')]")).click();