Java Selenium Webdriver代码在调试时工作,但在正常运行时不工作
我试图在列表框中选择一个项目。以下代码在调试应用程序时有效,但在正常运行时无效(如JUnit测试)Java Selenium Webdriver代码在调试时工作,但在正常运行时不工作,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我试图在列表框中选择一个项目。以下代码在调试应用程序时有效,但在正常运行时无效(如JUnit测试) 有什么想法吗?试试这段代码,它会每秒钟等待60秒,直到找到并单击元素: int flag=0,wait=0; while(flag==0 && wait<60){ try{ driver.findElement(By.xpath("//div[@id='ContentArea']/div/div/div[2]/div/table/tbody/tr[2]
有什么想法吗?试试这段代码,它会每秒钟等待60秒,直到找到并单击元素:
int flag=0,wait=0;
while(flag==0 && wait<60){
try{
driver.findElement(By.xpath("//div[@id='ContentArea']/div/div/div[2]/div/table/tbody/tr[2]/td/div/span/span/span[2]/span")).click();
flag=1;
}
catch(Exception){
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
wait++;
}
}
flag=0,wait=0;
while(flag==0 && wait<60){
try{
driver.findElement(By.xpath("//ul[@id='symptomHeadGroupDropDown_listbox']/li[5]")).click();
flag=1;
}
catch(Exception){
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
wait++;
}
}
int标志=0,等待=0;
而(flag==0&&wait我的理论是,WebElement的状态在wait.until调用和第二次解析它以调用click之间发生变化
不要多次解析WebElement,而是调用调用WebDriverWait的WebElement返回值上的单击()
或者,如果您不想将其存储为临时变量
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='ContentArea']//tbody/tr[2]/td/div/span/span/span[2]/span"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@id='symptomHeadGroupDropDown_listbox']/li[5]"))).click();
您是否尝试增加等待超时值?此外,在wait.until()
调用之后,不需要再发出一个findElement()
调用。wait.until()
在您的情况下,会返回一个WebElement
。那么这很可能是您的等待问题。请尝试将Thread.sleep放在中断的位置之前,然后用隐式/显式等待替换它。调试时,您会减慢测试步骤。正常运行时,它们的速度非常快,您需要进行适当的测试ctedconditions就位。有时,当其他元素在动画中出现/移动时,可能会使其他元素不可单击。因此,当页面呈现时,您的元素可单击,然后动画会插入并隐藏您的元素。我遇到过一些这样的情况。只是猜测。如果不期望实际的页面html/cs,很难看到s
WebElement target1 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='ContentArea']//tbody/tr[2]/td/div/span/span/span[2]/span")));
target1.click();
WebElement target2 =wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@id='symptomHeadGroupDropDown_listbox']/li[5]")));
target2.click();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='ContentArea']//tbody/tr[2]/td/div/span/span/span[2]/span"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@id='symptomHeadGroupDropDown_listbox']/li[5]"))).click();