selenium点击链接href与javascript

时间:2016-02-08 03:01:43

标签: javascript java selenium selenium-webdriver href

我是java和selenium的新手。我在单击href中的javascript链接时出现问题。 以下是页面来源:

href="javascript:navigateToDiffTab('https://site_url/medications','Are you sure you want to leave this page without saving your changes?');" tabindex="-1">Medications

请注意:由于业务问题,我将实际网址替换为“site_url”。

我尝试了下面的代码,但它不起作用:

driver.findElement(By.cssSelector("a[href^='javascript:navigateToDiffTab'][href$='site_url/medications']")).click();

我不想将id或linkText用作具有不同环境和语言的更改。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

选择器的这一部分:href$='site_url/medications'表示href应以site_url/medications结尾,但这不是真的,这就是您没有得到匹配的原因。

我们如何将其简化为" href包含''":

a[href*=medications]

答案 1 :(得分:0)

使用以下代码。它对我来说很好: -

WebElement element= driver.findElement(By.cssSelector("a[href^='javascript:navigateToDiffTab'][href$='site_url/medications']"))

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

如果上述代码对您不起作用,则表示您的定位器存在问题。然后尝试使用其他定位器或在您的问题中发布一些HTML代码,以便我们为您确定准确的定位器。

希望它会对你有所帮助:)。

答案 2 :(得分:0)

alexce has already identified href$='site_url/medications'进行后缀匹配的问题,但总结和解释您可以使用的各种CSS attribute selectors可能会有所帮助。

  

[attr] 表示属性名称为attr的元素。

     

[attr = value] 表示属性名称为attr且其值正好为“value”的元素。

     

[attr~ = value] 表示属性名称为attr的元素,其值是以空格分隔的单词列表,其中一个是   完全是“价值”。

     

[attr | = value] 表示属性名称为attr的元素。它的值可以是“值”,也可以以“值”开头   紧接着是“ - ”(U + 002D)。它可以用于语言   子码匹配。

     

[attr ^ = value] 表示属性名称为attr的元素,其值的前缀为“value”。

     

[attr $ = value] 表示属性名称为attr的元素,其值后缀为“value”。

     

[attr * = value] 表示属性名称为attr且其值至少包含一次字符串“value”的元素   串。