Jeff
Jeff

Reputation: 13

Selenium - Error Launching Chrome

When I call System.setProperty() on line 11 I get this error

Multiple markers at this line
  - Syntax error on token ",", < expected
  - Syntax error, insert ")" to complete MethodDeclaration
  - Syntax error, insert "Identifier (" to complete 
   MethodHeaderName
  - Syntax error, insert "SimpleName" to complete 
   QualifiedName
  - Syntax error on token ".", @ expected after this token

I know that the path to my chromedriver.exe is correct because I checked. I think it's just the placement of my System.setProperty().


Can someone help me with how to fix this so I don't get an error

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeTest;


public class BugLogin {

System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
WebDriver chromeDriver = new ChromeDriver();

@BeforeTest
public void setup() throws Exception {
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get("url");
}

public boolean bug() {
    WebElement test = driver.findElement(By.id("")); 
    while(true){
        if(test.getText().equals("text")){
            driver.findElement(By.id(""));
            driver.findElement(By.id("")).clear();
            driver.findElement(By.id("")).sendKeys("text");

            driver.findElement(By.id(""));
            driver.findElement(By.id("")).clear();
            driver.findElement(By.id("")).sendKeys("text");

            driver.findElement(By.id("")).click();
            break;
        }
        else{
            driver.navigate().back();
            return true;
        }
    }
    return false;
}
}

Upvotes: 0

Views: 2753

Answers (2)

Manu
Manu

Reputation: 2301

The issue is due to the below statement:

 System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");

Reason: You cannot use a statement containing executable code outside the class methods and only declare and initialize an identifier in definition.

Defining the ChromeDriver in definition and initializing it later in @BeforeTest may solve your problem.

WebDriver chromeDriver;

@BeforeTest
public void setup() throws Exception {
  System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
  chromeDriver = new ChromeDriver();
  driver.manage().window().maximize();
  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  driver.get("url");
}

Upvotes: 0

Jean Logeart
Jean Logeart

Reputation: 53839

Why not place your setup in your setup method?

@BeforeTest
public void setup() throws Exception {
    System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe");
    chromeDriver = new ChromeDriver();

    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get("url");
}

Upvotes: 1

Related Questions