如何在selenium webdirver

时间:2017-07-19 13:17:02

标签: selenium-webdriver geckodriver

我无法解除Firefox位置提醒。当我单击商店定位器时,Firefox将打开位置警报。我想点击“不允许”。我知道如何处理selenium web驱动程序中的警报框。但在这里我无法点击提醒。

package toysrus;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.UnexpectedAlertBehaviour;
import org.openqa.selenium.UnhandledAlertException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;

public class Toysrus {
    public WebDriver driver;

@Test(priority=1)
public void firefox() throws InterruptedException 
{    
    System.setProperty("webdriver.gecko.driver","C:/Users/naveenkumar.d/Downloads/geckodriver-v0.17.0-win64/geckodriver.exe");
      driver=new FirefoxDriver();
}


@Test(priority=2)
public void urlaccess()
{
    String URL="http://m.toysrus.com/?TRU=1";
    driver.get(URL);
}

@Test(priority=3)
public void menucontainner()
{
    driver.findElement(By.id("sk_menu_icon_container")).click();      
}

@Test(priority=3)
public void storeloocator() throws InterruptedException
{
    driver.findElement(By.name("storelocator")).click();
    Thread.sleep(5000);
    Alert alert = driver.switchTo().alert(); 
    alert.dismiss();
}

1 个答案:

答案 0 :(得分:0)

共享位置的权限不是警报(至少不是webdriver)。这是一种能力。因此,最好的方法是关闭该功能。请参阅我对此geolocation post的回答。基本上你需要为你的驱动程序设置DesiredCapabilities

DesiredCapabilities caps = new DesiredCapabilities();
caps.setBrowserName("firefox");
caps.setCapability("locationContextEnabled", false);

driver = new RemoteWebDriver(new URL(URL),caps);

//continue the rest of your test and remove the code on Alert

这将阻止提示甚至显示。

附注:我建议您使用@Before方法而不是@Test.

将此代码放在驱动程序初始化上