如何获得带有动态文本的html标签,并且还有一个跨度

时间:2016-11-24 09:46:17

标签: xpath selenium-webdriver tags

在自动化网站的过程中,我不得不生成元素的相对xpath。

网站名称:www.magicbricks.com/forum

请访问此网站并尝试在搜索栏中找到带有文字'Sai Park'的地点。

搜索框下方的列表中显示了很多结果。现在我必须选择'Project Sai Park,Pune'。

我确实尝试像这样生成xpath:

//span[text()='Sai Park']/parent::a[text()=', Pune']

但是,只有在锚标记中的span标记之前没有文本存在时,此代码才有效。

标签的文字取决于您搜索的内容(搜索的文字将被视为跨文本)

这是标签:

<a onclick="discussionPageSearchResult('48633','Project Sai Park |Pune','PROJECTS');" id="ui-id-151" class="ui-corner-all" tabindex="-1">Project <span>Sai Park</span>, Pune</a>

请告诉我如何处理这个问题?

由于

3 个答案:

答案 0 :(得分:3)

以下XPath表达式应该执行您想要的操作:

//a[normalize-space()="Project Sai Park, Pune"]

在规范化任何空格字符后,如果该标记内的文字等于 Project Sai Park,Pune ,则会选择a标记。

答案 1 :(得分:0)

试试这个:

// span [text()=&#39; Sai Park&#39;] / parent :: a [contains(text(),&#39; Pune&#39;)]

答案 2 :(得分:0)

如果您使用java,请使用以下解决方案:

WebElement element = driver.findElement(By.cssSelector("a[href*='project-sai-park']"));

//scroll to that element
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);

element.click();

希望这会对你有所帮助,让我知道会发生什么。