在selenium中查找具有生成的Id的元素?

时间:2014-08-22 08:33:02

标签: python html selenium

HTML:

<g id="OpenLayers.Layer.Vector_101_vroot">
    <image id="OpenLayers.Geometry.Point_259_status"..></image>

因此页面生成上述内容,并且每次加载时Id的数字部分都不同。

如何使用selenium和python找到它们,甚至是一组与模式相匹配的?

3 个答案:

答案 0 :(得分:1)

使用如下的Xpath:

//g[contains(@id, 'OpenLayers.Layer.Vector')]
//image[contains(@id, 'OpenLayers.Geometry.Point')]

希望有帮助!

答案 1 :(得分:0)

不需要和模式匹配,你可以使用这个模块here调用&#34;美丽的汤&#34;一些简单的文档here

例如,获取id =&#34的所有标签; OpenLayers.Layer.Vector_101_vroot&#34;使用方法:

soup = BeautifulSoup(<your_html_as_a_string>)
soup.find_all(id="OpenLayers.Layer.Vector_101_vroot")

答案 2 :(得分:0)

根据this answer,您可以使用css3 substring matching attribute selector。 以下代码单击OpenLayers.Layer.Vector属性中包含id的元素。

的Python

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://localhost:1111/')
browser.find_element_by_css_selector('[id*="OpenLayers.Layer.Vector"]').click()

HTML(显示在http://localhost:1111/

<button id="OpenLayers.Layer.Vector_123" onclick="alert(1);return false">xxx</button>