HTML代码:
<a id="id47" title="textA"
onclick="var wcall=wicketAjaxGet('?wicket:interface=:1blablabla')"
href="#">
<span class="icon" style="background-image: url('folder/background.png')"></span>
<span>textB</span>
我想使用Selenium webdriver找到并点击上面的图标。通常,我会使用ID执行此操作,但不幸的是,程序不断更改这些ID,因此我必须使用标题(textA)或Span(textB)来定位元素
我想出了以下内容:
public void performclick() throws Throwable {
Thread.sleep(5000);
driver.findElement(By.xpath("//span[contains(text('textB')]")).click();
}
或
public void performclick() throws Throwable {
Thread.sleep(5000);
driver.findElement(By.xpath("//*[contains(text('textA')]")).click();
}
以及对这些的任何偏差。 每次我运行场景时,它都没有回复。我没有想到什么?
答案 0 :(得分:1)
你也可以试试cssSelectors,
css = a[title='textA']
或
如果您的ID的某些部分保持不变,例如,如果id47
更改为id48
或id200
等等,您可以使用包含(,即ie) , * )或以(,即 ^ )开头:
css = a[id*='id'][title='textA']
或
css = a[id^='id'][title='textA']
对于span(textB),以下内容适用于:
css = span.icon + span
此处 + 用于定位以下兄弟。
答案 1 :(得分:0)
尝试:
//*[@title='textA']
或
//*[text()='textB']