【问题标题】:Find attribute with selenium用硒查找属性
【发布时间】:2012-09-22 11:19:33
【问题描述】:

我正在使用 selenium,我发现了这个 web 元素:

<td style="padding-right: 10px; " **onclick="javascript:show_me('CarDetails.php?CarID=2358912&SubCatID=1**', '2358912', 560, 'ActiveLinkVisited');stat( '../', 176, '', '' );" id="Txt_2358912">blabla</td>

我要获取"onclick"属性信息(javascript:show...文本)。

我如何用 selenium 做到这一点(如 DOM 中的 attr 函数)。

谢谢,
或者。

编辑:我会澄清我的问题。 我有这样的事情:

<tr id="tr_2358912" class="ActiveLink" onmouseover="this.className='overActiveLink'" onmouseout="(document.getElementById("TxtID2358912").innerText!="bla") ? this.className="ActiveLink" : this.className="openActiveLink" ">
    <td valign="middle">
    <td width="2"/>    
    <td id="Txt_2358912" onclick="javascript:show_me('CarDetails.php?CarID=2358912&SubCatID=1', '2358912', 560, 'ActiveLinkVisited');stat( '../', 176, '', '' );" style="padding-right: 7px; ">Text Here</td>
    <td width="2"/>

我有一个包含 ActiveLink 类的 WebElement:

WebElement element = driver.findElement(By.className("ActiveLink"));

我想从元素对象中获取onclick值

("javascript:show_me('CarDetails.php?CarID=2358912&SubCatID=1', '2358912', 560, 'ActiveLinkVisited'").

我试过了 element.findElement(By.xpath("//td[@onclick]")).getText() 并尝试了更多..但没有成功。 我对这个有点陌生.. 我希望有人能帮助我.. 谢谢!

【问题讨论】:

  • DOM 中的属性函数? jquery中有一个attr函数,原生javascript是somenode.getAttribute("attrname")

标签: java javascript html dom selenium


【解决方案1】:
String onclick=selenium.getAttribute("//td[contains(@onclick,'CarDetails.php')]@onclick");

onclick=onclick.substring(onclick.indexOf(":")+1)

【讨论】:

  • 请看我在原始消息中的澄清。我试着输入:'element.getAttribute("//td[contains(@onclick,'CarDetails.php')]@onclick");'但我得到的是空对象。
  • 我认为 (//td[contains(@onclick,'CarDetails.php')]) 将鼠标放在 tr[id='tr_2358912'] 上后可见。所以,先把鼠标放在tr上,然后尝试执行上面的语句
【解决方案2】:

使用属性选择器试试这个:

selector=//selector/used/to/find/the/td/@onclick

【讨论】:

  • 太好了,我继续获取属性,但我如何获得“javascript:show_me('CarDetails.php?CarID=2358912&SubCatID=1”文本?
  • 使用 text() 选择器,例如:selector=//selector/used/to/find/the/td/@onclick/text()
  • 我想从我的元素中访问 onclick 属性(请查看我的澄清信息。谢谢!
  • 你试过了吗:element.findElement(By.xpath("//td[@onclick]/@onclick/text()"))
  • 我正在使用调试器,当我尝试使用时: element.findElement(By.xpath("//td")) - 找到元素 element.findElement(By.xpath(" //td[@onclick]")) - 找到元素 element.findElement(By.xpath("//td[@onclick]/@onclick")) - 我得到 NoSuchElementException.. 当然也一样当我尝试全部时出现异常: element.findElement(By.xpath("//td[@onclick]/@onclick/text()")) 由于某种原因它找不到 @onclick 元素?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2021-03-18
  • 1970-01-01
  • 2018-05-04
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多