【问题标题】:Trouble finding element with cssSelector having parameters at end of URL在 URL 末尾有参数的 cssSelector 无法找到元素
【发布时间】:2016-10-21 11:46:10
【问题描述】:

我的申请中有一个链接,如下所述:

<a title="xyz" href="abc/home?locale=en"> some text </a>

我写了一个 cssSelector 来获取这个元素。 a[href*='home?locale=en'] 问题是这个 css 选择器在 Firebug、Firepath 和 Chrome 控制台中运行良好。但是,它不能使用 Selenium WebDriver 识别元素,即 By.cssSelector("a[href*='home?locale=en']") 不起作用。

我发现字符 ? 是问题所在。但是我不知道如何绕过它。

【问题讨论】:

  • 您的问题可能不是?,而是引用。试试这个:By.cssSelector("a[href*='home?locale=en']")
  • 抱歉,这不是问题所在。编辑了问题。
  • 我刚刚尝试了与 Chrome 驱动程序完全相同的链接,它按预期工作。
  • 我找到了根本原因。我会把它作为答案发布。

标签: java selenium selenium-webdriver css-selectors


【解决方案1】:

不要将 href 与 cssSelector 一起使用,而是使用 By.linkText()By.partialLinkText() 来标识元素。试试下面的选择器。

driver.findElement(By.partialLinkText('some text'))

【讨论】:

  • 我的链接文本是动态的,由客户输入。因此,它没有多大帮助。
  • 那你能不能试试像.//a[@href="abc/home?locale=en"]这样的XPath。
  • 我也试过了,但同样的问题。我找到了根本原因并将其作为答案发布。
【解决方案2】:

问题是我的服务器在 href 之后附加了一个 jsessionid。 jsessionId 未显示附加在浏览器端。

在 System.out.print 期间的href https://abc/home;jsessionid=3213323123123AAA3232?locale=en

浏览器端相同的href: /abc/home?locale=en

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    相关资源
    最近更新 更多