-3

我目前正試圖在我的工作場所自動化一些手動測試。我昨天才拿起Selenium,所以如果這個問題很容易回答,請耐心等待。我覺得我已經研究了幾個小時而沒有成功。我無法點擊元素,沒有錯誤 - WebDriver/Java/Firefox

我目前的問題是,WebDriver導航到的URL,但似乎沒有點擊按鈕。通常它會說'延期更新成功'。我想也許它正在快速離開,所以我添加了一個隱含的等待,但仍面臨同樣的問題。

隨機信息:使用Java時,Windows 10,硒3

由於更新反饋:

這裏是鏈接到網站。 MyExtension

我在繼續之前嘗試單擊此ExtensionButton,因爲我需要根據登錄的站點更新擴展。

這裏是我現在有的代碼,我試過使用XPath,cssSelectors,byId,byClass。這是工作1-2次,每種方法。

driver.get("https://account.walkme.com/ExtensionDownload/downloadPage.html?guid=f0dfc80b60f744d08ae38b7b41d8b852&customer=sarah_i&profile=default"); 
     wait.until(ExpectedConditions.visibilityOfElementLocated((By.xpath("//a[@id='extension-link']//span[@class='button-text']")))); 
     driver.findElement(By.id("extension-link")).click(); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 

這裏是HTML的一個片段:

  <img id="image" class="customer-icon"> 
      <div id="div-company"> 
       <label id="lbl-company">Company:</label> 
       <span id="company">SFQA</span> 
      </div> 
      <div id="div-profile"> 
       <label id="lbl-profile">Profile:</label> 
       <span id="profile">milton</span> 
      </div> 
      <div id="div-description" class="description-wrapper"> 
       <label id="lbl-description">Description:</label> 
       <span id="description"></span> 
      </div> 

      <div id="customer" class="customer"></div> 

      <a id="extension-link" class="orange-button update" style="cursor: pointer; display: inline-block;"> 
       <div class="button-icon"></div> 
       <span class="button-text">Update Extension</span> 
      </a> 

      <a id="extension-link-upgrade" class="orange-button"> 
       <div class="button-icon"></div> 
       <span class="button-text"></span> 
      </a> 


      <ul id="instructions" class="instructions"> 
       <li id="step-1"> 
        <div class="step-num">Step 1 - </div> 
        <div class="step-image"> 
        </div> 
       </li> 
       <li id="step-2"> 
        <div class="step-num">Step 2 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-3"> 
        <div class="step-num">Step 3 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-4"> 
        <div class="step-num">Step 4 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-5"> 
        <div class="step-num">Step 5 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-6"> 
        <div class="step-num">Step 6 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-7"> 
        <div class="step-num">Step 7 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-8"> 
        <div class="step-num">Step 8 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-9"> 
        <div class="step-num">Step 9 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-10"> 
        <div class="step-num">Step 10 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-11"> 
        <div class="step-num">Step 11 - </div> 
        <div class="step-image"></div> 
       </li> 
       <li id="step-12"> 
        <div class="step-num">Step 12 - </div> 
        <div class="step-image"></div> 
       </li> 
      </ul> 

我attemepting點擊線16-18。

<a id="extension-link" class="orange-button update" style="cursor: pointer; display: inline-block;"> 
       <div class="button-icon"></div> 
       <span class="button-text">Update Extension</span> 
      </a> 

請讓我知道,如果有任何反饋這篇文章。我想知道爲什麼我會收到選票。

+0

你嘗試一下span標籤?使用css選擇器「a.orange-button span .button-text」 –

+0

它曾經工作過一次,一直無法讓它再次工作。這很奇怪,因爲我有一個隱含的等待20秒,看到'擴展更新'的消息,它跳過了。 –

回答

0

根據HTML標準,ID在頁面上應該是唯一的。給你提供的HTML,你應該能夠使用

driver.findElement(By.id("extension-link")).click(); 
+0

我嘗試這個,不起作用,我們可以拿起它。 –

+0

「不起作用」是什麼意思?拋出錯誤等?你收到什麼信息? – JeffC

+0

它基本上跳過它。它去的網站,看看元素不會點擊它。繼續腳本。 –

-1

班有屬性class="orange-button update",但您使用的是[@class='orange-button']。嘗試改變,看看它是否工作。另外,如果你有任何問題,請分享錯誤訊息。

+0

這個類意味着這個標籤是兩個不同類的成員;所以我們可以通過使用任何一個類與任何其他標準 – kushal

1

如果你面對你不能直接處理任何異常困難,那麼你可以先嚐試使用動作類移動到該元素則點擊它如下:

WebElement we = driver.findElement(By.cssSelector("a#extension-link"); 
Actions action = new Actions(driver); 
action.moveToElement(we).click().build().perform(); 
+0

試圖這樣做,同樣的問題,腳本只是繼續運行,沒有點擊。 –

0

當它不點擊時,你會得到什麼錯誤。如果硒不執行行動,那麼它會拋出異常:

  • NoSuchElementException異常
  • ElemnentNotVisible
  • ElementNotClickable

此外,執行幾項檢查,以確認是否元素可以在網頁上被識別或不。

元現檢查:

`if(driver.findElements(By.xpath("value")).size() != 0){ 
System.out.println("Element is Present"); 
}else{ 
System.out.println("Element is Absent"); 
}` 
+0

NoSuchElementException錯誤。我會嘗試這個檢查,但它基本上是頁面上的唯一元素。 –

+0

現在我沒有收到錯誤消息,但它仍然沒有點擊並繼續執行腳本。 –

0
driver.findElement(By.id("extension-link")).click(); 

這是工作,這是沒有得到確認,那扔我的問題。但是,在檢查我的擴展程序唯一用戶之後,無論是否看到成功消息,它都會更新。

0

首先,你需要等待,直到你的出現元素正確:

WebDriverWait wait = new WebDriverWait(getDriverProvider().get(), 40); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#extension-link"))); 

然後嘗試通過執行JavaScript點擊: