[英]Error as Element is not clickable at point in selenium
大教堂结构:
<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>
我尝试了以下代码行用于注销:
首先单击注销符号:
WebDriverWait wait3 = new WebDriverWait(driver, 20);
driver.findElement(By.xpath("//img[@class = 'profileTrigger']")).click();
JavascriptExecutor jse = (JavascriptExecutor)driver;
/*exe1.executeScript("arguments[0].click();", newbt);*/
jse.executeScript("scroll(250, 0)");
第二次单击注销按钮:
driver.findElement(By.xpath("//a[@class =
'profile-link-label logout uiOutputURL']"));
我收到错误消息,因为元素无法点击。
1.通过选择器使用scrollTo元素-这将确保元素可见:
WebElement element = driver.findElement(By.xpath("//button[@class='oneUserProfileCardTrigger']"));
((JavascriptExecutor) driver)
.executeScript("arguments[0].scrollIntoView(true);", element);
2.始终使用延迟或滚动后等待,然后单击。 浏览器需要时间。
3.如果没有帮助-使用javascript单击。 糟糕的解决方案,因为它不像真正的用户那样,但始终可以工作:
WebElement element = driver.findElement(By.xpath("//button[@class='oneUserProfileCardTrigger']"));
((JavascriptExecutor)driver)
.executeScript("arguments[0].click();", element);
@SrieedherSanthakumar我想先澄清一下,您是否依赖等待呼叫。 就像您正在单击某些内容并想要等待某些内容,然后再次单击进行处理一样?
如果是这样,您可能需要修改第一个电话,如下所示:
WebDriverWait wait3 = new WebDriverWait(driver, 20);
driver.findElement(By.xpath("//img[@class = 'profileTrigger']")).click();
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
JavascriptExecutor jse = (JavascriptExecutor)driver;
/*exe1.executeScript("arguments[0].click();", newbt);*/
jse.executeScript("scroll(250, 0)");
等待页面加载或看到预期的ID后,请继续第二个调用。 我看不到您是否在第一个调用中等待对象加载,因为您在继续第二个调用之前单击profileTrigger 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.