使用JavaScript执行器连接可变字符串

使用JavaScript执行器连接可变字符串,javascript,java,selenium,Javascript,Java,Selenium,我有一个字符串变量,它从excel中获取一些ID String answerID = formatter.formatCellValue(sheet.getRow(i).getCell(2)); 我使用JavaScript executor每次更改ID时都会更改,但似乎连接不正确: je.executeScript("document.querySelector('.js-react-thanks-button-answer-id-"+answerID+" button').click()")

我有一个字符串变量,它从excel中获取一些ID

String answerID = formatter.formatCellValue(sheet.getRow(i).getCell(2));
我使用JavaScript executor每次更改ID时都会更改,但似乎连接不正确:

je.executeScript("document.querySelector('.js-react-thanks-button-answer-id-"+answerID+" button').click()");
 System.out.println("Thank you checked for link " + link);
je.executeScript("document.querySelector('div[data-answer-id='" + answerID + "'] .sg-rate-box__filled-stars span:last-of-type svg').click()");
System.out.println("5 stars for link " + link);

你能帮我个小忙吗

您需要用斜杠(\)转义符号,如下所示

je.executeScript("document.querySelector('div[data-answer-id=\'" + answerID + "\'] .sg-rate-box__filled-stars span:last-of-type svg').click()");
System.out.println("5 stars for link " + link);

首先在pom中添加以下依赖项:

<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>
希望这对您有所帮助。
对于转义javascript,您可以使用如下方法:

js.executeScript(StringEscapeUtils.escapeEcmaScript("document.querySelector('.js-react-thanks-button-answer-id-"+answerID+" button').click()"));
js.executeScript(StringEscapeUtils.escapeEcmaScript("document.querySelector('div[data-answer-id='" + answerID + "'] .sg-rate-box__filled-stars span:last-of-type svg').click()"));

您应该删除Selenium并可能在标记中添加Apache POI…@MichaelWölm OP正在使用
executeScript()
IMO,
Selenium
标记是公平的。@Cristinandu请避免一次问多个不同的问题。请参阅页面以获取澄清此问题的帮助。
js.executeScript(StringEscapeUtils.escapeEcmaScript("document.querySelector('.js-react-thanks-button-answer-id-"+answerID+" button').click()"));
js.executeScript(StringEscapeUtils.escapeEcmaScript("document.querySelector('div[data-answer-id='" + answerID + "'] .sg-rate-box__filled-stars span:last-of-type svg').click()"));