2017-04-14 35 views
0

我已閱讀有關點擊幾個問題是不工作,但仍不明白爲什麼它不起作用的真正原因。我基本上在等待隱式的頁面加載,所以我可以搜索模式的關閉按鈕。我已閱讀,我需要啓用javascript,但認爲這是沒有必要的,根據使用FF驅動硒機制的文檔運行在真正的瀏覽器和支持JavaScript點擊不工作在硒驅動程序java

private WebDriver driver; 
    public Test() { 
     System.setProperty("webdriver.gecko.driver", "geckodriver.exe"); 
     driver =new ChromeDriver(); 
     driver.get("https://www.site.site"); 
     driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 

    } 

    public void close50off(){ 
     WebElement element = driver.findElement(By.className("close-button")); 
     if(element.isEnabled()){ 
      element.click(); 
     } 
     else{ 
      System.out.println("Disable"); 
     } 
    } 

這是HTML

<div class="close-button"> 
    <a class="closeModal"> 
     <img alt="Close Modal Button" style="border: 0;" src="/_ui/desktop/theme/images/close-button.png"> 
    </a> 
</div> 

但它給我這個錯誤

Driver info: org.openqa.selenium.chrome.ChromeDriver 
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.29.461591 (62ebf098771772160f391d75e589dc567915b233), userDataDir=C:\Users\dturcios\AppData\Local\Temp\scoped_dir8916_4528}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=57.0.2987.133, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}] 
Session ID: 5d9cf82fc240a40a7bf3245bb8b1ce6f 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:638) 
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:274) 
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:84) 
    at testclasses.MyronTest.close50off(Test.java:38) 
    at seleniumproject1.SeleniumProject1.main(SeleniumProject1.java:32) 
+0

你在哪裏調用close50off()? – kushal

+0

主要的是,沒有必要包含它 – Diego

回答

0

你做錯了什麼是;您初始化驅動程序ChromedriversetProperty()方法要爲geckodriver設置路徑,改變路徑chromedriver如下:

System.setProperty("webdriver.chrome.driver", "your\path\to\chromedriver.exe"); 

如果你願意,那麼你需要的壁虎驅動程序路徑的設置使用Firefox瀏覽器測試:和您可以將您的網頁驅動器更改爲:

driver =new FirefoxDriver(); 
0

我明白了。您提到的類名屬於html DOM的Div部分。如果你點擊div部分,什麼都不會發生。我們需要點擊包含標籤名稱「a」的Div的超鏈接部分。所以,你的代碼應該是,

WebElement元= driver.findElement(By.className( 「closeModal」));

而且,它最好提及driver.get(「URL」)行之上的隱式等待。另外,你在setproperty中提到了Gecko驅動程序的路徑,但是Error中的期望功能顯示了chromedriver 2.29。我希望你有鉻驅動程序的全局設置。