为了账号安全,请及时绑定邮箱和手机立即绑定

我的关于 Selenium 的通过 css 选择器查找元素的问题

我的关于 Selenium 的通过 css 选择器查找元素的问题

德玛西亚99 2021-11-24 15:21:59
我正在使用 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 codeDate 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");
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

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

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

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

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


查看完整回答
反对 回复 2021-11-24
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

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

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


查看完整回答
反对 回复 2021-11-24
?
繁花如伊

TA贡献2012条经验 获得超12个赞

如果您想使用来自的值和文本Shared Google Drive Folder构造一个cssSelector,您可以使用以下解决方案:strDate


// Customized cssFormatString code

Date date = new Date();

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

String strDate = dateFormat.format(date);

driver.findElement(By.cssSelector("div[aria-label^='" + strDate + "'][aria-label$='Shared Google Drive Folder']")).getAttribute("data-id");


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信