0

我尝试在 codemodel(Sun) 中创建下一个表达式:

  driver.findElement(By.xpath("//div[text()=\""+whatToclick+"\"]/parent::span/parent::span")).click();

所以 whatToclick 将是我函数中的一个参数。

所以我写了下一个:

    method.body().invoke(JExpr.ref("driver"), "findElement").arg(jc.ref(By.class).staticInvoke("xpath").arg("//div[text()=\"+"+ whatToclick.name() +"+\"]/parent::span/parent::span")).invoke("click");

我有两个问题:

  1. 我没有成功将 whatToClick 作为参数。它总是在引号中(因为我的表达式是一个字符串,我必须放/",否则它会关闭字符串。)

  2. 表达式是在没有click()零件的情况下创建的。

有什么帮助吗?

4

1 回答 1

1

请尝试以下方法,它使用JExpr.lit()直接引用字符串并.add()连接字符串和变量。它还使用add()方法体上的方法来添加click()调用:

method.body().add(JExpr.ref("driver").invoke("findElement")
    .arg(codeModel.ref(By.class).staticInvoke("xpath")
        .arg(JExpr.lit("//div[text()=\"+").plus(whatToclick).plus(JExpr.lit("+\"]/parent::span/parent::span"))).invoke("click")));

输出:

driver.findElement(By.xpath((("//div[text()=\"+"+ whatToclick)+"+\"]/parent::span/parent::span")).click());
于 2013-12-03T17:36:49.313 回答