具有相同html结构的两个div的Xpath和CSSselector

具有相同html结构的两个div的Xpath和CSSselector,xpath,selenium-webdriver,css-selectors,Xpath,Selenium Webdriver,Css Selectors,我有两个div。要求是我需要点击上传按钮。我需要通过检查按钮text Upload找到第一个div和第二个div的xpath,然后单击它。那么如何找到div的xpath并单击它。是否有同样的CSS选择器 <div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2"> <button class="btn btn-primary" type="submit"> <i class="fa fa

我有两个div。要求是我需要点击上传按钮。我需要通过检查按钮text Upload找到第一个div和第二个div的xpath,然后单击它。那么如何找到div的xpath并单击它。是否有同样的CSS选择器

<div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2">
  <button class="btn btn-primary" type="submit">
    <i class="fa fa-upload"/>
      Upload
  </button>
<a href="SomeLinkHere">
<button class="btn" type="button">Cancel</button>
</a>
</div>

<div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2">
  <button class="btn btn-primary" type="submit">
    <i class="fa fa-upload"/>
      Upload
  </button>
<a href="SomeLinkHere">
<button class="btn" type="button">Cancel</button>
</a>
</div>

上传
上传

您可以尝试以下XPath:

//div[./button/i[contains(text(), 'Upload')]]
此XPath将返回
div
元素

编辑:获取
按钮
元素

//button[./i[contains(text(), 'Upload')]]

我建议您为firefox安装selenium ide。它有内置的元素定位器,这证明在像您这样的情况下是有用的


我尝试呈现您在jsfiddle.net中提供的html代码,并使用selenium ide获得了它们的xpath。你可以看到它

你好,杰森,这不起作用。因为标签在上传之前是关闭的。所以基本上上传是写在按钮标签下的。@MelvinRichard-我明白你的意思了。但我想问一个问题。您使用的是selenium webdriver还是SeleniumIDE?抱歉,请尝试此//i[contains(text(),'Upload')]@sameerjoshi此操作无效,因为“Upload”位于标记下,而不是在上面的@Melvin Richard下。请使用按钮替换标记i,如果不起作用,请尝试此//按钮[@type,'submit'。单击();希望它能起作用