2017-06-22 68 views
-4

我嘗試下面的代碼:代碼,點擊註銷按鈕硒的webdriver

driver.findElement(By.xpath("//img[@src='https://c.ap5.content.force.com/profilephoto/005/T/1']")).click(); 
JavascriptExecutor jse = (JavascriptExecutor) driver; 
jse.executeScript("arguments[0].click();", newbt); 


//clicking Log out button. 
driver.findElement(By.xpath("//a[contains(@class, 'profile-link-label logoutuiOutputURL')]")).click(); 

我收到以下錯誤:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Element is not 
clickable at point (1231, 25). Other element would receive the click: <div 
class="panel slds-modal slds-fade-in-open" aria-labelledby="title_2099:0" 
tabindex="-1" role="dialog" data-aura-rendered-by="2115:0" style="opacity: 
1;">...</div> 

DOM結構進行註銷:

<li class="slds-dropdown-trigger slds-dropdown-trigger--click slds-m-left-- 
x-small" data-aura-rendered-by="534:20;a"> 
<!--render facet: 537:20;a--> 
<!--render facet: 541:20;a--> 
<button class="bare slds-button uiButton forceHeaderButton 
oneUserProfileCardTrigger" aria-live="off" type="button" data-aura-rendered 
-by="184:190;a" data-aura-class="uiButton forceHeaderButton 
oneUserProfileCardTrigger"><!--render facet: 185:190;a--> 
<!--render facet: 
187:190;a--><div class="tooltipTrigger tooltip-trigger uiTooltip" aria- 
describedby="tt-for-174:190;a" tabindex="-1" data-aura-rendered- 
by="179:190;a" 
data-aura-class="uiTooltip"><span data-aura-rendered-by="171:190;a" 
class="uiImage" data-aura-class="uiImage"> 
<img data-aura-rendered-by="169:190;a" 
src="https://c.ap5.content.force.com/profilephoto/005/T/1" 
class="profileTrigger" alt=""></span><span class="tooltip-invisible" 
role="tooltip" id="tt-for-174:190;a" data-aura-rendered-by="181:190;a">View 
profile</span></div> 
</button> 
<!--render facet: 543:20;a--> 
</li> 

有人可以解釋爲什麼這不起作用,並可能提出修復?謝謝。

+0

請正確格式化您的問題。 – DCON

+0

是可見的註銷按鈕? –

+0

@santhosh,是的,它是可見的。 –

回答

0

這裏發生了什麼是在註銷按鈕前面有另一個元素。沒有看到正在測試的實際頁面,有幾件事情可能是錯誤的,但這裏有一些潛在的解決方案。

  • 最大化selenium webdriver窗口,因爲較小的窗口可能會調整元素的大小以重疊註銷按鈕。
  • 檢查網頁(右鍵單擊>檢查),看看什麼元素重疊註銷按鈕。使用JavaScript執行

    WebElement e = driver.findElement(By.xpath("//a[contains(@class, 'profile-link-label logout uiOutputURL')]")); 
    JavascriptExecutor executor = (JavascriptExecutor)driver; 
    executor.executeScript("arguments[0].click();", e); 
    

0

嘗試點擊希望它會幫助你

+0

上面的代碼在線程「main」中給出錯誤作爲異常org.openqa.selenium.NoSuchElementException:no such element:無法找到元素:{「method」:「xpath」,「selector」:「// a [包含(@class,'profile-link-label註銷uiOutputURL')]「}。 –

+0

當您使用的定位器不存在於用戶界面上時,NoSuchElement異常會出現。您可以請分享註銷按鈕的HTML代碼。只要檢查註銷按鈕的元素,並複製HTML代碼並粘貼在這裏 – tester

0

點擊用戶名,以便註銷按鈕將變得可見。

driver.findElement(by.xpath("//div[@id='userNavButton']/span")).click(); 

現在點擊註銷按鈕。

driver.findElement(by.xpath("//a[contains(text(),'Logout')]")).click(); 

希望這可以幫助你。謝謝。

+0

好的,如果問題已經解決,那麼好。 –

+0

請刪除您的所有評論爲這個答案..,它看起來更混亂 –