Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium Webdriver代码在调试时工作,但在正常运行时不工作_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java Selenium Webdriver代码在调试时工作,但在正常运行时不工作

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]

我试图在列表框中选择一个项目。以下代码在调试应用程序时有效,但在正常运行时无效(如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]/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();