Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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
Selenium Java如何将驱动程序返回到上一页_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Selenium Java如何将驱动程序返回到上一页

Selenium Java如何将驱动程序返回到上一页,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我在pageA中有两个链接。当我单击第一个链接时,它会重定向到另一个名为pageB的页面,并执行某些工作,然后返回pageA。从这里,它应该再次点击第二个链接,但它说页面已重新加载,没有可用的缓存 //List of all tickets for(WebElement ticket: ticketList){ List<WebElement> ticketCells = ticket.findElements(By.tagName('td')); if(ticketCells.

我在pageA中有两个链接。当我单击第一个链接时,它会重定向到另一个名为pageB的页面,并执行某些工作,然后返回pageA。从这里,它应该再次点击第二个链接,但它说页面已重新加载,没有可用的缓存

//List of all tickets
for(WebElement ticket: ticketList){
List<WebElement> ticketCells = ticket.findElements(By.tagName('td'));
  if(ticketCells.get(4).getText().equalIgnoreCase("Some Text")){
   ticketCells.get(2).click(); //Redirects to pageB
   .....
   do some job
   .......
   //Finally clicking on the 'SAVE & BACK' button which should return  to previous 
   //page and pick the 2nd ticket from the list of all tickets (1st for loop) 
   driver.findElement(By.id("save&back")).click();
  }
}
//所有票据的列表
对于(WebElement票证:票证列表){
List ticketCells=ticket.findElements(按.tagName('td'));
if(ticketCells.get(4.getText().equalIgnoreCase(“某些文本”)){
ticketCells.get(2).单击();//重定向到pageB
.....
做些工作
.......
//最后单击“保存并返回”按钮,该按钮应返回到上一步
//翻页并从所有票证列表中选择第二张票证(第一张用于循环)
driver.findElement(By.id(“保存并返回”)。单击();
}
}
此处虽然返回到上一页pageA,但无法从for循环中选择第二个元素进行下一步操作

任何关于如何使其工作的想法。

@try-catch最终解释得非常清楚。下面的代码正是处理错误所需的代码。
@try-catch-finally explained it very clearly. The below code is exactly what you need to handle the error.

for(int i = 0; i <2 ;i++){
ticketList = driver.findElements(selector);
ticket = ticketList.get(i);
List<WebElement> ticketCells = ticket.findElements(By.tagName('td'));
  if(ticketCells.get(4).getText().equalIgnoreCase("Some Text")){
   ticketCells.get(2).click(); //Redirects to pageB
   .....
   do some job
   .......
   //Finally clicking on the 'SAVE & BACK' button which should return  to previous 
   //page and pick the 2nd ticket from the list of all tickets (1st for loop) 
   driver.findElement(By.id("save&back")).click();
  }
}

对于(int i=0;i我认为您想要的是按浏览器的后退按钮,对吗

如果是这样,请尝试:

webDriver.navigate().back();

是否需要导航到同一浏览器选项卡中的上一页?@santhoshkumar是的,所有这些都应该发生在单个浏览器选项卡上。driver.navigate().back();将带您进入上一页不要像Guy说的那样添加网站链接。它会随着时间的推移而改变或消失,使此问题对其他人毫无用处。描述页面和流程,可能添加屏幕截图或涂鸦。请注意,与
ticket
的第二次交互可能会(您没有提到错误消息)失败,出现
StaleElementReferenceException
,因为您因导航而更改了页面内容。返回时(目前不清楚此异常或导航是否是您的问题)无法与该列表中的元素交互。您必须在导航后再次选择它们,并使用计数器变量而不是迭代器(确定有N行,从0..N-1开始计数,然后执行
ticketList.get(index)
)。请添加您得到的异常。