【问题标题】:code to click a log out button in selenium webdriver在 selenium webdriver 中单击注销按钮的代码
【发布时间】:2017-11-25 15:39:31
【问题描述】:

我尝试了以下代码:

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>

有人可以解释为什么这不起作用并可能提出修复建议吗?谢谢。

【问题讨论】:

标签: java selenium


【解决方案1】:

这里发生的情况是注销按钮前面还有另一个元素。如果没有看到正在测试的实际页面,可能会有一些问题,但这里有一些潜在的解决方案。

  • 最大化 selenium webdriver 窗口,因为较小的窗口可能会调整元素的大小以与您的注销按钮重叠。
  • 检查网页(右键单击 > 检查)并查看与注销按钮重叠的元素。

【讨论】:

    【解决方案2】:

    尝试使用 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);
    

    希望对你有帮助

    【讨论】:

    • 以上代码在线程“main”org.openqa.selenium.NoSuchElementException 中给出错误异常:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:” //a[contains(@class, 'profile-link-label logout uiOutputURL')]"} .
    • 当您使用的定位器在 UI 上不存在时,会出现 NoSuchElement 异常。您能否分享注销按钮的html代码。只需检查注销按钮的元素并复制 html 代码并粘贴到此处
    【解决方案3】:

    点击用户名,退出按钮就会变得可见。

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

    现在点击注销按钮。

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

    希望这对您有所帮助。谢谢。

    【讨论】:

    • 请为这个答案删除你所有的 cmets..,它看起来更凌乱
    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多