如何使用SeleniumWebDriver为下面的html查找元素

如何使用SeleniumWebDriver为下面的html查找元素,selenium,webdriver,Selenium,Webdriver,单击下面的HTML时,我遇到了一个问题: <div id="P7d2205a39cb24114b60b80b3c14cc45b_1_26iT0C0x0" style="word-wrap:break-word;white-space:pre-wrap;font-weight:500;" class="Ab73b430b430a49ebb0a0e8a49c8d71af3"><a tabindex="1" style="cursor:pointer;" onclick="var r

单击下面的HTML时,我遇到了一个问题:

<div id="P7d2205a39cb24114b60b80b3c14cc45b_1_26iT0C0x0" style="word-wrap:break-word;white-space:pre-wrap;font-weight:500;" class="Ab73b430b430a49ebb0a0e8a49c8d71af3"><a tabindex="1" style="cursor:pointer;" onclick="var rp=$get('ctl00_ContentPlaceHolder1_ReportViewer1_ctl10_ReportControl');if(rp&amp;&amp;rp.control)rp.control.InvokeReportAction('Toggle','26iT0C0x0');return false;" onkeypress="if(event.keyCode == 13 || event.which == 13){var rp=$get('ctl00_ContentPlaceHolder1_ReportViewer1_ctl10_ReportControl');if(rp&amp;&amp;rp.control)rp.control.InvokeReportAction('Toggle','26iT0C0x0');}return false;"><img border="0" src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=10.0.30319.1&amp;Name=Microsoft.ReportingServices.Rendering.HtmlRenderer.RendererResources.TogglePlus.gif" alt="+"></a>&nbsp;2013</div>

您可以在xpath查找中使用“contains”方法:

driver.findElement(By.xpath("//div[contains(@id,'26iT0C0x0')]")

我建议您选择CSS选择器替代CSS,比XPath更快。 例如,CSS中属性中的“contains”代表“*=” 如果我们想找到以“CSS”结尾的属性:我们需要执行以下操作:

String CSSselector="htmlTag[A*=CSS]";
你可以搜索这个元素

因此,请考虑您的示例CSS选择器,如下所示:

字符串csssearch=div[id*=26iT0C0x0]a

也试着不要点击链接-a 但在父div上:

字符串csssearch=div[id*=26iT0C0x0]


希望这对您有用。

正如Mark Rwolands已经提到的:Selenium 2中不支持xpath函数“以结尾”。 此外,如果你可能考虑在将来使用ChrimEdvor,我建议点击图像,而不是锚,请参见:

编辑:
您的ID看起来也生成了。我不会指望他们有一个稳定的测试环境。

发布HTML内容。它是div,在这个div中有锚定标记,我想点击锚定标记,锚定标记没有这样的东西来识别它。html发布在上面。上面没有任何html…很抱歉,由于一些错误,问题中没有显示html。请立即查看感谢:Selenium给我以下错误,并在等待元素可单击10秒后超时:By.xpath://div[ends-with@id,'26iT0C0x0']/xpath表达式“//div[结束-with@id,'iT0C0x0']/无法计算“”或不会导致WebElement警告:服务器未提供任何stacktrace信息命令持续时间或超时:53毫秒,尽管我已增加等待的超时时间,但也使用了contains方法,但仍不起作用。如果使用“”结束于“”,则需要使用xpath2.0这在所有浏览器中都不受支持,因此我建议使用xpath1.0中提供的“contains”,这在更多浏览器中都受支持。
String CSSselector="htmlTag[A*=CSS]";
driver.findElement(By.cssSelector(cssSearched));