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>
我尝试了Logout的这些代码行:
首先点击退出符号:
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']"));
我收到错误,因为Element无法点击。
答案 0 :(得分:0)
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);
答案 1 :(得分:0)
@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 后,我无法确定您是否在第一次加载来电中等待您的对象。