如何使Selenium定位器独特或内部HTML独特

时间:2012-01-06 21:00:48

标签: python selenium

一个简单的需求:如何修改HTML Source,以便特定HTML元素的每个innerhtml都是唯一的。一个简单的例子可以更清楚地解释同样的事情:

<html>
<a href="/hello/doit.do"><img src="Button.bmp" border="0"></a>
<a href="/hello/doit.do">A Real Link</a>
</html>

如果您注意到,用户会将其视为文本链接和图像链接。如果我希望仅通过构建这样的CSS定位器来使用属性来找到这个元素:

loc = 'css=a[href="/hello/doit.do"]'

Selenium会找到两个元素。 在Python 2.7中使用Selenium RC Client,我希望简单地添加一个随机数作为ID属性,以便将它们分开。我的问题是,如何遍历所有常见的innerHTML并添加一个随机数?

据我所知,

get_css_count(loc)

只能得到你的数字= 2.我需要的是每个内部HTML,以便插入一个唯一的属性?

长话短说,硒有get_attribute(attributeLocator),我想知道是否有set_attribute(attributeLocator, value)

1 个答案:

答案 0 :(得分:0)

你真的需要使用Selenium修改DOM吗?您可以使用@racar建议的页面js更改DOM(例如,对于jQuery):

$(function() {
    var i = 1;
    $('a[href="/hello/doit.do"]').each(function() {
        $(this).attr('id', 'link_' + i);
        i += 1;
    });
});

这将为您的所有链接添加ID&#34; link_1&#34;,&#34; link_2&#34;,...。

或者您可以在渲染HTML时添加该ID,如果您自己渲染它。可能如果你分享你的真实任务,为什么你需要分开这些链接,我们可以建议一个更好的解决方案。