【发布时间】:2018-03-06 21:04:56
【问题描述】:
您好,以下所有代码都可以在这里工作。
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();
问题: 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?
【问题讨论】:
-
我认为您缺少引号。你有
driver.findElement(By.xpath("//*[contains(text(),"+client+")]")).click();,它叫driver.findElement(By.xpath("//*[contains(text(),'"+client+"')]")).click(); -
我会试试这个一分钟
-
当我使用上面的方法时,我从堆栈跟踪中收到了这条消息......无法找到元素:{“method”:“xpath”,“selector”:“//* [contains(text( ),'midrfrate ')]"}
-
好吧,您的客户端变量中有空格。试试这个
driver.findElement(By.xpath("//*[contains(text(),'"+client.trim()+"')]")).click(); -
我会的,但空白来自(eclipse中的堆栈跟踪消息,它将其余部分放在另一行)因此空间
标签: java selenium xpath selenium-webdriver chrome-web-driver