Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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在chrome浏览器中进行可视化验证时不打开单击的链接?_Java_Selenium_Google Chrome - Fatal编程技术网

Java 为什么Selenium在chrome浏览器中进行可视化验证时不打开单击的链接?

Java 为什么Selenium在chrome浏览器中进行可视化验证时不打开单击的链接?,java,selenium,google-chrome,Java,Selenium,Google Chrome,我正在运行SeleniumJava脚本来点击(几乎)网站上的所有链接。不过,当我观察运行中的chrome浏览器时,脚本运行得很好:并不是所有的链接都打开了正确的新网页。E不遵循顶部的六个菜单项 我评估了一些等待页面加载的方法,但在chrome观察中并没有区别。Selenium应该等待为自己加载正确的页面 这是我的java代码AppTest.java: package de.auticon.website; import org.openqa.selenium.support.ui.Expect

我正在运行SeleniumJava脚本来点击(几乎)网站上的所有链接。不过,当我观察运行中的chrome浏览器时,脚本运行得很好:并不是所有的链接都打开了正确的新网页。E不遵循顶部的六个菜单项

我评估了一些等待页面加载的方法,但在chrome观察中并没有区别。Selenium应该等待为自己加载正确的页面

这是我的java代码AppTest.java:

package de.auticon.website;

import org.openqa.selenium.support.ui.ExpectedConditions;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.junit.Assert.*;
import org.junit.Assert;


import org.openqa.selenium.By;      
import org.openqa.selenium.WebDriver;       
import org.openqa.selenium.chrome.ChromeDriver;     
import java.util.List;      
import java.util.concurrent.TimeUnit;       
//import java.util.concurrent.TimeSpan;     
import org.openqa.selenium.*;       
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.interactions.Action;

import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedCondition;
//import org.openqa.selenium.IJavaScriptExecutor;
//import org.openqa.selenium.IJavaScriptExecutor.ExecuteScript;
//import org.openqa.selenium.IWebDriver;
//import org.openqa.selenium.support.ui.IWait;

public class AppTest extends TestCase{              

WebDriver driver = new ChromeDriver();


 public void waitForPageLoaded() {
    ExpectedCondition<Boolean> expectation = new
            ExpectedCondition<Boolean>() {
                public Boolean apply(WebDriver driver) {
                    return ((JavascriptExecutor) driver).executeScript("return document.readyState").toString().equals("complete");
                }
            };
    try {
        Thread.sleep(1000);
        WebDriverWait wait = new WebDriverWait(driver, 30);
        wait.until(expectation);
    } catch (Throwable error) {
        Assert.fail("Timeout waiting for Page Load Request to complete.");
    }
}       

public void test_all_links() {                                  
    String baseUrl = "http://auticon.nepomedia-staging.de/";                    
    System.setProperty("webdriver.chrome.driver","c:\\chromedriver_win32\\chromedriver.exe");                   


    String underConsTitle = "not found";                    
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);                 
        driver.get(baseUrl);                    

    //show DSGVO:
    WebElement we = driver.findElement(By.linkText("Datenschutzerklärung"));

    Actions xAct = new Actions(driver);
    xAct.moveToElement(we);
    xAct.click();
    xAct.perform();     

          if (driver.getTitle().equals(underConsTitle)) {                           
            System.out.println("\"" + we + "\""                             
                    + " is under construction.");           
          } else {          
            System.out.println("\"" + we + "\""                             
                    + " is working.");          
          }     

          //driver.navigate().back();   
          driver.get(baseUrl);      

    //remove DSGVO banner:
    we = driver.findElement(By.linkText("Ja, ich stimme zu"));

    xAct = new Actions(driver);
    xAct.moveToElement(we);
    xAct.click();
    xAct.perform();

    //click_all_links:  
    //List<WebElement> linkElements = driver.findElements(By.tagName("a"));                         
    //String[] linkTexts = new String[linkElements.size()];                         
        //int                   i = 0;                  

        //extract the link texts of each link element       
        //for (WebElement e : linkElements) {                           
        //linkTexts[i] = e.getText();                           
        //i++;          
        //}     

        //test each link        
        //for (String t : linkTexts) {                          



        //if (!t.isEmpty()){

        for (int i=0; true; i++)
        {
            List<WebElement> links = driver.findElements(By.tagName("a"));
            if (i >= links.size())
            break;
        if(!links.get(i).getText().isEmpty())
        {

          //WebDriverWait wait = new WebDriverWait(driver, 10);
          //WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(links.get(i)));


          we = links.get(i);//driver.findElement(By.linkText(t));

          System.out.println("\"" + links.get(i).getText() + "\""   );

          xAct = new Actions(driver);
          xAct.moveToElement(we);
          xAct.click();
          xAct.perform();

          //IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(30.00));

          //wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));

          waitForPageLoaded(); 

          if (driver.getTitle().equals(underConsTitle)) {                           

                System.out.println(    " is under construction.");          
          } else {          
            //System.out.println("\"" + links.get(i).getText() + "\""                               
                System.out.println( " is working.");            
          }     
          //driver.navigate().back();   
          driver.get(baseUrl);
        }           
    }       
        driver.quit();          
}       
}
package de.auticon.website;
导入org.openqa.selenium.support.ui.ExpectedConditions;
导入junit.framework.Test;
导入junit.framework.TestCase;
导入junit.framework.TestSuite;
导入org.junit.Assert.*;
导入org.junit.Assert;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.chrome.ChromeDriver;
导入java.util.List;
导入java.util.concurrent.TimeUnit;
//导入java.util.concurrent.TimeSpan;
导入org.openqa.selenium.*;
导入org.openqa.selenium.interactions.Actions;
导入org.openqa.selenium.interactions.Action;
导入org.openqa.selenium.support.ui.WebDriverWait;
导入org.openqa.selenium.support.ui.ExpectedCondition;
//导入org.openqa.selenium.IJavaScriptExecutor;
//导入org.openqa.selenium.IJavaScriptExecutor.ExecuteScript;
//导入org.openqa.selenium.IWebDriver;
//导入org.openqa.selenium.support.ui.IWait;
公共类AppTest扩展了TestCase{
WebDriver驱动程序=新的ChromeDriver();
public void waitForPageLoaded(){
预期条件预期=新
期望条件(){
公共布尔应用(WebDriver驱动程序){
return((JavascriptExecutor)driver.executeScript(“return document.readyState”).toString().equals(“complete”);
}
};
试一试{
睡眠(1000);
WebDriverWait wait=新的WebDriverWait(驱动程序,30);
等待,直到(期望);
}捕获(可丢弃错误){
Assert.fail(“等待页面加载请求完成的超时”);
}
}       
public void test_all_links(){
字符串baseUrl=”http://auticon.nepomedia-staging.de/";                    
System.setProperty(“webdriver.chrome.driver”,“c:\\chromedriver\U win32\\chromedriver.exe”);
字符串undernstitle=“未找到”;
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
get(baseUrl);
//显示DSGVO:
WebElement we=driver.findElement(By.linkText(“Datenschutzerklärung”);
动作xAct=新动作(驱动程序);
xAct.moveToElement(我们);
xAct.click();
xAct.perform();
如果(driver.getTitle().equals(underConsTitle)){
System.out.println(“\”+we+“\”)
+“正在建设中。”);
}否则{
System.out.println(“\”+we+“\”)
+“正在工作。”);
}     
//driver.navigate().back();
get(baseUrl);
//删除DSGVO横幅:
we=driver.findElement(By.linkText(“Ja,ich stimme zu”);
xAct=新操作(驱动程序);
xAct.moveToElement(我们);
xAct.click();
xAct.perform();
//单击所有链接:
//List linkElements=driver.findElements(按.tagName(“a”));
//String[]LinkText=新字符串[linkElements.size()];
//int i=0;
//提取每个链接元素的链接文本
//对于(WebElement e:linkelement){
//linktext[i]=e.getText();
//i++;
//}     
//测试每个链接
//对于(字符串t:LinkText){
//如果(!t.isEmpty()){
for(int i=0;true;i++)
{
列表链接=driver.findElements(按.tagName(“a”));
如果(i>=links.size())
打破
if(!links.get(i).getText().isEmpty())
{
//WebDriverWait wait=新的WebDriverWait(驱动程序,10);
//WebElement=wait.until(ExpectedConditions.visibilityOfElementLocated(links.get(i));
we=links.get(i);//driver.findElement(By.linkText(t));
System.out.println(“\”+links.get(i).getText()+“\”);
xAct=新操作(驱动程序);
xAct.moveToElement(我们);
xAct.click();
xAct.perform();
//IWait wait=new OpenQA.Selenium.Support.UI.WebDriverWait(驱动程序,TimeSpan.FromSeconds(30.00));
//wait.Until(driver1=>((IJavaScriptExecutor)driver.ExecuteScript(“return document.readyState”).Equals(“complete”);
waitForPageLoaded();
如果(driver.getTitle().equals(underConsTitle)){
System.out.println(“正在建设中”);
}否则{
//System.out.println(“\”+links.get(i).getText()+“\”)
System.out.println(“正在工作”);
}     
//driver.navigate().back();
get(baseUrl);
}           
}       
driver.quit();
}       
}

您可以一次获取所有链接,然后使用以下工具检查它们:

driver.get("http://auticon.nepomedia-staging.de/");

//get all links with href that start with http
ArrayList<String> links = (ArrayList) ((JavascriptExecutor) driver).executeScript("return [...document.querySelectorAll(\"a[href^='http']\")].map(e=>e.getAttribute('href'))");

links.forEach(link->{
    driver.get(link);
    //check here
});
driver.get(“http://auticon.nepomedia-staging.de/");
//使用href获取以http开头的所有链接
ArrayList链接=(ArrayList)((JavascriptExecutor)驱动程序).executeScript(“返回[…document.querySelectorAll(\“a[href^='http']\”)))。映射(e=>e.getAttribute('href'));
links.forEach(链接->{
获取(链接);
//检查h