带有查找元素命令的字符串变量 Java
String Variable with Find Element Commands Java
您好,以下所有代码都可以正常工作。
String content = FileUtils.readFileToString(new File("C:\PayrollSync\prepayroll.txt"));
String [] Arrayclients = content.split("\n");
// begin for loop
for(String client : Arrayclients) {
PP_OBJ_CycleData.verifysearch(driver);
PP_OBJ_CycleData.searchbox(driver).clear();
PP_OBJ_CycleData.searchbox(driver).sendKeys(client);
PP_OBJ_CycleData.searchbox(driver).sendKeys(Keys.BACK_SPACE);
Thread.sleep(4000);
//WebElement dropdown = driver.findElement(By.xpath(".//*[@title="+client+"]"));
//dropdown.click();
//driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();;
Thread.sleep(2000);
PP_OBJ_CycleData.practitioner(driver).click();
问题:
None 对于 driver.findElements 正在工作,例如:
//WebElement dropdown = driver.findElement(By.xpath(".//*[@title="+client+"]"));
//dropdown.click();
//driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();;
Thread.sleep(2000);
我的失败痕迹说找不到元素 By.xpath("//*[contains(text(),"+client+")]"))。但是,当我转到下一页时,我正在等待该元素可见。下面是我的等待。
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).withTimeout(20, TimeUnit.SECONDS);
element = driver.findElement(By.id("toolbarQuickSearch"));
wait.until(ExpectedConditions.or(
ExpectedConditions.visibilityOf(element),
ExpectedConditions.elementToBeClickable(element)
));
如果在搜索字段中输入包含字符串的变量并且字符串名称可见后,selenium 无法找到要单击的字符串名称,我可以看到问题如下:
我可以把它放进去,它会一直点击它:
driver.findElement(By.xpath("//*[text()='midrfrate']"]"));
但是如果我这样做它找不到它:
driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
driver.findElement(By.xpath("//[contains(text(),"+client+")]")).click();
请帮助我,我已经尝试了以下但没有成功:
How to use variables in XPath?
字符串 ".//*[(text(), " + client + "]"
等于 ".//*[(text(), midrfrate]"
您需要将变量放在撇号中
".//*[contains(text(), '" + client + "']"
你的 xpath:
driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();
:
应包含撇号
contains 块中的文本应包含准确的字符串(您在客户端变量 'midrfrate ' 中有尾随空格)。
最终的 xpath 是:
driver.findElement(By.xpath("//*[contains(text(),'"+client.trim()+"')]")).click();
其中 trim() 方法从客户端变量中删除前导和尾随空格。
您好,以下所有代码都可以正常工作。
String content = FileUtils.readFileToString(new File("C:\PayrollSync\prepayroll.txt"));
String [] Arrayclients = content.split("\n");
// begin for loop
for(String client : Arrayclients) {
PP_OBJ_CycleData.verifysearch(driver);
PP_OBJ_CycleData.searchbox(driver).clear();
PP_OBJ_CycleData.searchbox(driver).sendKeys(client);
PP_OBJ_CycleData.searchbox(driver).sendKeys(Keys.BACK_SPACE);
Thread.sleep(4000);
//WebElement dropdown = driver.findElement(By.xpath(".//*[@title="+client+"]"));
//dropdown.click();
//driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();;
Thread.sleep(2000);
PP_OBJ_CycleData.practitioner(driver).click();
问题: None 对于 driver.findElements 正在工作,例如:
//WebElement dropdown = driver.findElement(By.xpath(".//*[@title="+client+"]"));
//dropdown.click();
//driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();;
Thread.sleep(2000);
我的失败痕迹说找不到元素 By.xpath("//*[contains(text(),"+client+")]"))。但是,当我转到下一页时,我正在等待该元素可见。下面是我的等待。
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).withTimeout(20, TimeUnit.SECONDS);
element = driver.findElement(By.id("toolbarQuickSearch"));
wait.until(ExpectedConditions.or(
ExpectedConditions.visibilityOf(element),
ExpectedConditions.elementToBeClickable(element)
));
如果在搜索字段中输入包含字符串的变量并且字符串名称可见后,selenium 无法找到要单击的字符串名称,我可以看到问题如下:
我可以把它放进去,它会一直点击它:
driver.findElement(By.xpath("//*[text()='midrfrate']"]"));
但是如果我这样做它找不到它:
driver.findElement(By.xpath(".//*[(text(),"+client+"]")).click();
driver.findElement(By.xpath("//[contains(text(),"+client+")]")).click();
请帮助我,我已经尝试了以下但没有成功: How to use variables in XPath?
字符串 ".//*[(text(), " + client + "]"
等于 ".//*[(text(), midrfrate]"
您需要将变量放在撇号中
".//*[contains(text(), '" + client + "']"
你的 xpath:
driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();
:
应包含撇号
contains 块中的文本应包含准确的字符串(您在客户端变量 'midrfrate ' 中有尾随空格)。
最终的 xpath 是:
driver.findElement(By.xpath("//*[contains(text(),'"+client.trim()+"')]")).click();
其中 trim() 方法从客户端变量中删除前导和尾随空格。