首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关于Selenium的find元素by css选择器的问题

关于Selenium的find元素by css选择器的问题
EN

Stack Overflow用户
提问于 2018-10-18 05:20:12
回答 3查看 438关注 0票数 2

我使用Selenium通过css选择器查找web元素。当我对它进行硬编码时,它工作得很好,如下所示。

driver.findElement(By.cssSelector("div[aria-label=\"2018-10-17 Shared Google Drive Folder\"]")).getAttribute("data-id");

但是,如果我想根据日期自定义css选择器字符串,如下所示,它会抛出一个错误:

org.openqa.selenium.InvalidSelectorException: invalid selector: An invalid or illegal selector was specified

我打印出cssFormatString,它看起来和上面硬编码的完全一样。谁能告诉我哪里出了问题?

// Customized cssFormatString code
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String strDate = dateFormat.format(date);
String cssFormatString = "div[aria-label=\\\"" + strDate +  " Shared Google Drive Folder\\\"]";
driver.findElement(By.cssSelector(cssFormatString)).getAttribute("data-id");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-18 05:29:19

只需使用单引号而不是双引号,它应该可以工作。

String cssFormatString = "div[aria-label='2018-10-17 Shared Google Drive Folder']"

所以你的字符串连接将会很简单,

String cssFormatString = "div[aria-label='" + strDate +  " Shared Google Drive Folder']"
票数 6
EN

Stack Overflow用户

发布于 2018-10-18 12:19:07

您必须使用单引号而不是双引号,例如:

String cssFormatString = "div[aria-label='2018-10-17 Shared Google Drive Folder']"

票数 2
EN

Stack Overflow用户

发布于 2018-10-18 05:50:27

您的代码无法工作,因为您使用了不必要的反斜杠\

你的代码的结果是div[aria-label=\"2018-10-18 Shared Google Drive Folder\"],因为有反斜杠,你会得到无效的选择器错误。

使用一个反斜杠来转义引号,如下面的代码所示:

String cssFormatString = "div[aria-label=\"" + strDate +  " Shared Google Drive Folder\"]"

值为:div[aria-label="2018-10-18 Shared Google Drive Folder"]

或者在@Navarasu answer中使用单引号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52863781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档