HTML:
<g id="OpenLayers.Layer.Vector_101_vroot">
<image id="OpenLayers.Geometry.Point_259_status"..></image>
因此页面生成上述内容,并且每次加载时Id的数字部分都不同。
如何使用selenium和python找到它们,甚至是一组与模式相匹配的?
答案 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>