GVKun编程网logo

Selenium Webdriver:如何找到元素的所有属性?(元素查找)

8

对于想了解SeleniumWebdriver:如何找到元素的所有属性?的读者,本文将是一篇不可错过的文章,我们将详细介绍元素查找,并且为您提供关于AttributeError:“列表”对象没有属性“单

对于想了解Selenium Webdriver:如何找到元素的所有属性?的读者,本文将是一篇不可错过的文章,我们将详细介绍元素查找,并且为您提供关于AttributeError:“列表”对象没有属性“单击”-Selenium Webdriver、IntelliJ Java - Selenium webdriver 找不到元素 - 动态 ID、java – Selenium WebDriver无法通过链接文本找到元素、java – Selenium WebDriver:无法使用TinyMCE编辑器在iframe中找到元素的有价值信息。

本文目录一览:

Selenium Webdriver:如何找到元素的所有属性?(元素查找)

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

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

如何解决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();

但我收到此错误消息: org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:{"method":"xpath","selector":"//td[3]/a/span"}

如果我尝试使用 selenium 定位元素,请在前端页面中成功找到。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

java – Selenium WebDriver无法通过链接文本找到元素

java – Selenium WebDriver无法通过链接文本找到元素

我正在尝试选择一个包含一个锚点的元素,但文本被埋在一个div内的段落中.这是我正在使用的 HTML:
<ang-href="#/catalog/90d9650a36988e5d0136988f03ab000f/category/DATABASE_SERVERS/service/90cefc7a42b3d4df0142b52466810026" href="#/catalog/90d9650a36988e5d0136988f03ab000f/category/DATABASE_SERVERS/service/90cefc7a42b3d4df0142b52466810026">
<div>
<img ng-src="csa/images/library/Service_Design.png" src="csa/images/library/Service_Design.png">
</div>
<div>
<div>
    <p>
    <strong>Smoke Sequential</strong>
    </p>

我使用的代码试图阻止它是针对“Smoke Sequential”文本:

driver.findElement(By.linkText(service)).click();

变量“service”持有“Smoke Sequential”的位置.当我运行它,我得到以下错误:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"link text","selector":"Smoke Sequential"}

任何帮助将不胜感激.

解决方法

问题可能在html的其余部分,您没有发布的部分.

有了这个例子(我刚刚关闭了打开的标签):

<ang-href="#/catalog/90d9650a36988e5d0136988f03ab000f/category/DATABASE_SERVERS/service/90cefc7a42b3d4df0142b52466810026" href="#/catalog/90d9650a36988e5d0136988f03ab000f/category/DATABASE_SERVERS/service/90cefc7a42b3d4df0142b52466810026">
<div>
<img ng-src="csa/images/library/Service_Design.png" src="csa/images/library/Service_Design.png">
</div>
<div>
<div>
    <p>
    <strong>Smoke Sequential</strong>
    </p>
    </div>
</div>
</a>

我能找到的元素没有麻烦:

driver.findElement(By.linkText("Smoke Sequential")).click();

如果元素中有更多文本,可以尝试通过部分链接文本查找:

driver.findElement(By.partialLinkText("Sequential")).click();

java – Selenium WebDriver:无法使用TinyMCE编辑器在iframe中找到元素

java – Selenium WebDriver:无法使用TinyMCE编辑器在iframe中找到元素

也许我的问题类似于这个 Selenium WebDriver cannot locate element within an iframe,and throws NoSuchElementException但是我仍然找不到必需的元素.
元素本身看起来:

body id="tinymce"contenteditable="true" onload="window.parent.tinyMCE.get('compose_295_composeEditor').onLoad.dispatch();" dir="ltr">

包含此元素的iframe是:

body id="tinymce"contenteditable="true" onload="window.parent.tinyMCE.get('compose_295_composeEditor').onLoad.dispatch();" dir="ltr">

我试过了

driver.switchTo().frame(10);
driver.switchTo().frame(driver.findElement(By.id("tinymce")));
driver.findElement(By.id("tinymce")).clear();
driver.findElement(By.id("tinymce")).sendKeys("Privet!"); // clear mail text body
driver.switchTo().defaultContent();

但收到错误:

Unable to locate frame: 10

尝试过类似的东西

driver.switchTo().frame(driver.findElement(By.id("tinymce")));

如其他答案所述,但收到NoSuchElement错误.

元素周围的HTML是:

<div>
<div id="compose_295_toolbar_external">
<divhttps://www.jb51.cc/tag/dis/" target="_blank">display: none;">
<div id="compose_295_composeFrame">
<div></div>
<tablecellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div id="compose_295_composeEditorFrame">
<table id="compose_295_shell__text"cellspacing="0" cellpadding="0" bgcolor="" background="">
<tbody>
<tr>
<tr>
<td>
<table id="compose_295_middleTable"cellspacing="0" cellpadding="0">
<tbody>
<tr id="compose_295_middleRow_sht">
<td id="compose_295_shell__text_cell_holder"valign="top">
<tablecellspacing="0" cellpadding="0">
<tbody>
<tr>
<tr>
<td id="compose_295_shell__text_cell"valign="top">
<textarea id="compose_295_composeEditor"wrap="physical" tabindex="10" name="Body"https://www.jb51.cc/tag/dis/" target="_blank">display: none;" cols="80" rows="15" spellcheck="true" aria-hidden="true"> </textarea>
 <span id="compose_295_composeEditor_parent">
 <table id="compose_295_composeEditor_tbl"cellspacing="0" cellpadding="0">
<tbody>
<trhttps://www.jb51.cc/tag/irs/" target="_blank">irst mceLast">
<tdhttps://www.jb51.cc/tag/irs/" target="_blank">irst mceLast">
<iframe id="compose_295_composeEditor_ifr" frameborder="0" src="javascript:""" allowtransparency="true" title="{#aria.rich_text_area}"https://www.jb51.cc/tag/dis/" target="_blank">display: block;" hidefocus="true" tabindex="10" scrolling="auto">
<html>
<head xmlns="http://www.w3.org/1999/xhtml">
<body id="tinymce"contenteditable="true" onload="window.parent.tinyMCE.get('compose_295_composeEditor').onLoad.dispatch();" dir="ltr">
</html>
</iframe>
</td>
</tr>
</tbody>
</table>
</span>
</td>
</tr>
<tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>

UPD Selenium and wordpress: New post test,olyv的回答帮助了我,但是:
1)很难将这个问题与我的问题联系起来,因为它没有在标题中提到TinyMCE编辑器,而且问题不在于wordpress.
2)我编辑了我的问题名称来表明问题来源–TinyMCE编辑器.
3)Saifur的答案在这里完美地回答了我的问题.
所以我相信我的问题不应该被关闭

解决方法

根据html,识别iframe的选择器是不正确的.我正在使用一个cssSelector,它允许您识别具有部分id匹配的iframe.你为什么不尝试这个?

driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[id$='_composeEditor_ifr']")));
d̶r̶i̶v̶e̶r̶.̶s̶w̶i̶t̶c̶h̶T̶o̶(̶)̶.̶f̶r̶a̶m̶e̶(̶d̶r̶i̶v̶e̶r̶.̶f̶i̶n̶d̶E̶l̶e̶m̶e̶n̶t̶(̶B̶y̶.̶i̶d̶(̶"̶t̶i̶n̶y̶m̶c̶e̶"̶)̶)̶)̶;̶
driver.findElement(By.id("tinymce")).clear();
driver.findElement(By.id("tinymce")).sendKeys("Privet!"); // clear mail text body
driver.switchTo().defaultContent();

今天关于Selenium Webdriver:如何找到元素的所有属性?元素查找的介绍到此结束,谢谢您的阅读,有关AttributeError:“列表”对象没有属性“单击”-Selenium Webdriver、IntelliJ Java - Selenium webdriver 找不到元素 - 动态 ID、java – Selenium WebDriver无法通过链接文本找到元素、java – Selenium WebDriver:无法使用TinyMCE编辑器在iframe中找到元素等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇selenium网格:MaxSessions与MaxInstances(selenium network)

下一篇限制Selenium FindElement()的超时时间(selenium 超时设置)