我正在自动化一个网站,我有几个6位数的数字(例如-11111222222333333(
如果我取111111(在for循环内(并识别路径:
driver.find_element_by_xpath("//a[@class='button' and @title='Create Work Item Copy']").click()
第一次它能够找到它并点击它,但当循环第二次运行时,以此类推(对于222222333333,…n(,我得到:
消息:没有这样的元素:无法定位元素:{"方法":"xpath","选择器":"//a[@class='button'和@title='创建工作项副本"]"}
上面的错误消息是针对我想要点击的按钮,在检查"检查元素"时,
我发现循环每次迭代的"id"都在变化。
<span class="jazz-ui-toolbar-Button" **id="jazz_ui_toolbar_Button_16"** widgetid="jazz_ui_toolbar_Button_16" style=""><a class="button" dojoattachpoint="titleNode,focusNode" href="#" dojoattachevent="onclick:_onClick,onkeypress:_onKeyPress" role="button" title="Create Work Item Copy" aria-disabled="false" tabindex="-1"><img src="/ccm/web/dojo/resources/blank.gif?etag=azf6UBC" class="button-img sprite-image-15" alt="Create Work Item Copy"><span class="button-label" dojoattachpoint="_label" style="display:none"></span></a>
在上面的HTML中,对于for循环的第一次迭代,"id"是id="jazz_ui_toolbar_Button_16"是16,但对于第二次迭代,这个16将在for循环的第二次循环中变成一些随机数,依此类推
因此,我得到了错误。
我试过使用绝对的xpath,没有用。请帮忙。
如果你需要更多信息,请告诉我。
使用contains
函数:
driver.find_element_by_xpath("//span[contains(@id, 'jazz_ui_toolbar_Button_')]").click()
*更新
如果有多个元素,可以在最后一个xpath中使用序列[number]
,如下所示:
driver.find_element_by_xpath("(//span[contains(@id, 'jazz_ui_toolbar_Button_')])[1]").click()
或者使用.find_elements
:
elements = driver.find_elements_by_xpath("//span[contains(@id, 'jazz_ui_toolbar_Button_')]")
#elements[index].click()
elements[0].click()
上面提到的是第一个元素。