Java 如何在执行下一个操作之前等待页面加载?
我的页面包含高级搜索链接,在该链接中,填写搜索条件后,会出现一个加载程序,根据搜索条件加载我的结果,然后我需要执行删除 我的脚本运行得非常快,它不会等待加载程序消失,然后单击“删除”,这是不应该发生的,因为它们没有与我的搜索条件匹配的记录 我使用的代码-Java 如何在执行下一个操作之前等待页面加载?,java,selenium,selenium-webdriver,xpath,webdriver,Java,Selenium,Selenium Webdriver,Xpath,Webdriver,我的页面包含高级搜索链接,在该链接中,填写搜索条件后,会出现一个加载程序,根据搜索条件加载我的结果,然后我需要执行删除 我的脚本运行得非常快,它不会等待加载程序消失,然后单击“删除”,这是不应该发生的,因为它们没有与我的搜索条件匹配的记录 我使用的代码- driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS) 任何能帮我的人都要等待这样的过程 如果有任何澄清,请告诉我。使用显式等待,请将其用作示例: WebDriverWait
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS)代码>
任何能帮我的人都要等待这样的过程
如果有任何澄清,请告诉我。使用显式等待,请将其用作示例:
WebDriverWait wait = new WebDriverWait(driver, 20);
By element1 = By.xpath("path of element");
// get the button1 element
WebElement button1= wait.until(ExpectedConditions.presenceOfElementLocated(element1 ));
使用此示例首先我必须等待关于
链接可点击,因此我必须使用显式等待,然后等待我们的产品
链接可点击
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://www.google.com");
WebDriverWait wait =new WebDriverWait(driver, 20);
WebElement aboutLink= wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.linkText("About"))));
aboutLink.click();
WebElement producttLink= wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//a[text()='Our products']"))));
producttLink.click();
如果您知道加载器的元素(例如,classname=“spinner
”),您还可以等待该元素的不可见性
请尝试以下代码:
WebDriverWait wait = new WebDriverWait(driver, 20);
By loadElement = By.className("spinner");
//wait until loader is gone
WebDriverWait.until(ExpectedConditions.invisibilityOfElementLocated(loadElement));
由于在填充搜索条件时会出现一个加载程序,它会根据搜索条件加载结果,然后您需要执行删除,因此我们有两种方法来解决此问题
- 在第一种方法中,我们将等待加载程序
消失
,然后单击所需的WebElement
以删除
。我们将通过WebDriverWait
实施此方法,并将ExpectedConditions
设置为invisibilityOfElementLocated
,如下所示:
WebDriverWait wait10 = new WebDriverWait(driver, 10);
wait10.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_loader")));
driver.findElement(By.xpath("xpath_delete_button")).click();
WebDriverWait wait11 = new WebDriverWait(driver, 10);
WebElement element11 = wait11.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_delete_button")));
element11.click();
- 在第二种方法中,我们将等待
WebElement
as delete按钮可单击,然后单击预期的WebElement
以delete
。我们将通过WebDriverWait
实施此方法,并将ExpectedConditions
设置为elementtobelickable
,如下所示:
WebDriverWait wait10 = new WebDriverWait(driver, 10);
wait10.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_loader")));
driver.findElement(By.xpath("xpath_delete_button")).click();
WebDriverWait wait11 = new WebDriverWait(driver, 10);
WebElement element11 = wait11.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_delete_button")));
element11.click();
duplicate@RajuSharma由于问题未标记为正确答案,我是否应将其视为重复。我应等待哪个元素。下一个操作,即。,。删除我要执行的操作或单击“高级搜索”时删除。如果您的操作卡住,您可以使用它,我在单击“删除”之前使用过,但它不起作用:(我能给你一个例子吗?试试这个,我添加了一个新的答案。你能解释我吗,为什么你要对同一个问题给出多个答案。这很烦人。请只用不同的解决方案发布一个答案。然后你可以将你的答案与正确的文本合并。不像其他答案。