How can I run Selenium Webdriver test case using ChromeDriver? - java

I have done this
File file = new File("path\\to\\chrome driver");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
WebDriver driver = new ChromeDriver();
Totally I have 5 testcases to test. But when testing only 2 or 3 test cases are running and the remaining are not.
Then I got error as,
[1207/104351:ERROR:ipc_sync_channel.cc(378)] Canceling pending sends
[1207/104351:ERROR:automation_proxy.cc(319)] Channel error in AutomationProxy.
My test cases are in java and i'm trying this is Windiws OS
What is this how can I fix this?

This is an issue with Chromedriver.Refer this link Chromedriver Issue

System.setProperty("webdriver.chrome.driver", "D:/chromedriver.exe");
WebDriver driver = new ChromeDriver();
Download chromedriver.exe from internet.

Set the path to the chrome.exe.

Related

Selenium can't open Gitlab login page

I'm doing an automated test, using Java (8), Selenium (4) and Chromedriver (98.0).
The test is for a site that requires to login with different third party accounts, one of them being GitLab.Unfortunately the test always gets stuck while trying to access Gitlab's login page, on the "Checking your browser before accessing gitlab.com" part. If I pause the test on this step and duplicate the tab manually, the newly opened tab will be able to enter and then the first one will be also able to do it (probably because at that point finally has a valid cookie).I've tried out different solutions but with no luck. Currently this is my code:
#Test
public void test() throws MalformedURLException {
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--disable-blink-features=AutomationControlled");
options.addArguments("--start-maximized");
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), options);
driver.navigate().to("https://gitlab.com/users/sign_in");
new FluentWait<>(driver)
.withTimeout(Duration.ofSeconds(60))
.pollingEvery(Duration.ofSeconds(2))
.until(x -> driver.findElements(By.xpath("//*[#data-translate='checking_browser']")).size() == 0);
}
When trying to use undetected_chromedriver, using Python, it worked, but it's a requirement for me to use Java. Is there something similar for Java or is there an extra ChromeOption that I'm missing?
need to download chrome driver https://chromedriver.chromium.org/downloadshttps://chromedriver.chromium.org/downloads
and add this code while setting up driver
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();

Selenium Proxy Pop up in Java

Everything is working completely fine except this one proxy login which I can’t bypass.
Here is what I've tried to pass this:
https://{USERNAME}:{PASSWORD}#url - This still displays the same popup
driver.switchTo().alert().sendKeys(proxy.getUsername()); // Alert is never found.
driver.switchTo().activeElement().sendKeys(proxy.getUsername()); // Nothing happens
new Actions(driver).sendKeys(proxy.getUsername()).build().perform(); // Nothing is happening
Here is the code I'm using to connect to the url
public void execute(ProxyConnection proxy) {
WebDriver driver = setupDriver(proxy);
driver.get(URL);
driver.manage().window().maximize();
// Here I use test methods like shown above
}
public WebDriver setupDriver(ProxyConnection proxyConnection) {
System.setProperty("webdriver.chrome.driver", "MY PATH");
String proxyadd = proxyConnection.getHostName() + ":" + proxyConnection.getPort();
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyadd);
proxy.setSslProxy(proxyadd);
ChromeOptions options = new ChromeOptions();
options.setCapability("proxy", proxy);
if (!debugMode) {
options.addArguments("--headless");
}
return new ChromeDriver(options);
}
I'm using ChromeDriver version: 91.0.4472
I'm using selenium-chrome-driver version: 3.8.0
Any help is greatly appreciated.
Still no answer to this.
I even tried playing around with selenium and chrome versions but still no luck. I updated to BETA v4.0.0 and this didn't have any effect.
AutoIT or Robot is not suitable because it needs to be headless.
Try to use
driver.switchTo().alert().sendKeys("username");
You find more exemples in https://www.guru99.com/alert-popup-handling-selenium.html
For anyone wondering what the solution was because I was testing for hours and hours but finally found one that works...
((HasAuthentication) driver).register(UsernameAndPassword.of(ProxyData.getInstance().getUsername(), ProxyData.getInstance().getPassword()));
Note: This requires version Selenium 4.0.0 or higher.

Firefox Error: "Your connection is not secure" while launching driver with Selenium 3.0.1 using Java

My Firefox version is 46.0.1 and Selenium version is 3.0.1.
I am getting error:
Your connection is not secure
while executing following code:
#Test
public void test() {
ProfilesIni profile = new ProfilesIni();
FirefoxProfile ffProfile = profile.getProfile("newCretedProfile");
ffProfile.setAcceptUntrustedCertificates(true);
ffProfile.setAssumeUntrustedCertificateIssuer(false);
System.setProperty("webdriver.gecko.driver", "D:\\SELENUIUM\\Drivers\\geckodriver.exe");
FirefoxDriver driver = new FirefoxDriver(ffProfile);
driver.get("http://www.google.com");
driver.quit();
}
I have created new firefox profile and followed steps from this url
Nevertheless it's not working and giving me same error while I launching any site.
Download Firefox 55 beta and set
capabilities.setCapability("acceptInsecureCerts", true);
Here is my code that works for Firefox 55 beta:
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("firefox");
capabilities.setCapability("acceptInsecureCerts", true);
RemoteWebDriver driver = new RemoteWebDriver(Environment.remoteWebDriverURL, capabilities);
I have tried this approach and it worked well for me.
Create new firefox profile by following below step.
Close all your firefox windows
In the Run dialog box, type in: ‘firefox.exe -p' and then Click OK.
Click “Create Profile”
Create a name for your new profile(say Selenium)
Click “Choose Folder”
Pick location something easy to find — like “C:\NewFirefoxProfile”
Click Finish
Now after selecting newly created profile, start Firefox. Open the specific url you were getting 'Secure Connection Issue', accept SSL certificates for this profile.
Now use the newly created firefox profile to run your selenium test. Modify below code as per your requirement.
System.setProperty("webdriver.firefox.marionette","D:\\SELENUIUM\\Drivers\\geckodriver.exe");
ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("C:\\NewFirefoxProfile");//location of your new firefox profile
WebDriver driver = new FirefoxDriver(myprofile);
driver.get("https://cacert.org/");
With FF v53+ and Se 3.x (summer 2017), advice from before (May?) 2017 is no longer true.
You have to use Marionette and set capability to True.
Took me few days to sort out all old and obsolete advice, yours for free. :-)
Looks like it is not supported yet by geckodriver/Marionette.
You can check below bugs for more information:-
https://github.com/mozilla/geckodriver/issues/93
https://bugzilla.mozilla.org/show_bug.cgi?id=1103196
If you want to run the tests on Firefox with Selenium 3.0 set the Firefox driver capability “marionette” to false.
#Test
public void test() {
DesiredCapabilities d = new DesiredCapabilities();
d.setCapability("marionette", false);
WebDriver driver = new FirefoxDriver(d);
driver.get("http://www.google.com");
driver.quit();
}

selenium get() doesn't do anything

driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
The code below should open a firefox browser, navigate to google and search for "automation" and should navigate again to yahoo. But driver.get("http://www.yahoo.com") doesn't do anything. How will I change URL using selenium?
driver.get("http://www.google.com");
widget=driver.findElement(By.id("lst-ib"));
widget.click();
widget.sendKeys("automation");
widget.sendKeys(Keys.ENTER);
driver.get("http://www.yahoo.com");
widget=driver.findElement(By.xpath(".//*[#id='yui_3_12_0_1_1452245228407_940']/td[1]/a"));
widget.click();
The same is working fine for me after pausing/stopping the my kaspersky internet security.
driver.get("http://www.google.com");
driver.findElement(By.id("lst-ib")).sendKeys("seleniumhq");
driver.findElement(By.id("lst-ib")).sendKeys(Keys.ENTER);
Thread.sleep(6000);
driver.get("http://www.yahoo.com");
Assuming you are running code on Windows, can you check your hosts file entry. You can find it in below location:
C:\Windows\System32\Drivers\etc\hosts
Have a look at the file content and check if localhost resolution has been altered.
If it does not help, post selenium version you are using, error message which you are getting.
You cannot open in same object. Two Options
Option 01:
You can open in new window like this
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement widget = driver.findElement(By.id("lst-ib"));
widget.click();
widget.sendKeys("automation");
widget.sendKeys(Keys.ENTER);
WebDriver seconddriver = new FirefoxDriver();
seconddriver.get("http://www.yahoo.com");
Option 02:
you can use keyboard keys to open new window or tab and then using driver.switchto.

How to set Google Chrome in WebDriver

I am trying to set Chrome as my browser for testing with Web-Driver and set the chromedriver.exe file properly but I am still getting the following error:
org.openqa.selenium.WebDriverException:
The path to the driver executable must be set by the webdriver.chrome.driver system property;
for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver.
The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list
I have already checked the path of the driver but still i am getting same error.
I don't know where i have made a mistake.
Here is my code:
File file = new File("C:\\chromedriver.exe");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
Capability= DesiredCapabilities.chrome();
Capability.setBrowserName("chrome");
Capability.setPlatform(Platform.LINUX);
browser=new RemoteWebDriver(new URL(nodeURL),Capability);
browser.get(webUrl);
Please help me!!
Aditya,
As you said in your last comment that you are trying to access chrome of some other system so based on that you should keep your chrome driver in that system itself.
for example: if you are trying to access linux chrome from windows then you need to put your chrome driver in linux at some place and give permission as 777 and use below code at your windows system.
System.setProperty("webdriver.chrome.driver", "\\var\\www\\Jar\\chromedriver");
Capability= DesiredCapabilities.chrome(); Capability.setPlatform(org.openqa.selenium.Platform.ANY);
browser=new RemoteWebDriver(new URL(nodeURL),Capability);
This is working code of my system.
I'm using this since the begin and it always work. =)
System.setProperty("webdriver.chrome.driver", "C:\\pathto\\my\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
For Mac -Chrome browser
public class MultipleBrowser {
public WebDriver driver= null;
String browser="mozilla";
String url="https://www.omnicard.com";
#BeforeMethod
public void LaunchBrowser() {
if(browser.equalsIgnoreCase("mozilla"))
driver= new FirefoxDriver();
else if(browser.equalsIgnoreCase("safari"))
driver= new SafariDriver();
else if(browser.equalsIgnoreCase("chrome"))
System.setProperty("webdriver.chrome.driver","/Users/mhossain/Desktop/chromedriver");
driver= new ChromeDriver();
driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
driver.navigate().to(url);
//driver.manage().deleteAllCookies();
}
It was giving Illegal Exception.
My workaround with code:
public void dofirst(){
System.setProperty("webdriver.chrome.driver","D:\\Softwares\\selenium\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.facebook.com");
}
Mac OS:
You have to install ChromeDriver first:
brew cask install chromedriver
It will be copied to /usr/local/bin/chromedriver. Then you can use it in java code classes.
public void setUp() throws Exception {
System.setProperty("webdriver.chrome.driver","Absolute path of Chrome driver");
driver =new ChromeDriver();
baseUrl = "URL/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

Categories

Resources