【问题标题】:How to construct an xpath to click the logout link as per the html provided如何根据提供的 html 构建 xpath 以单击注销链接
【发布时间】:2018-07-03 04:49:18
【问题描述】:

我正在尝试单击注销链接以使用 selenium xpath 注销应用程序。该网页具有用户图像链接,单击它时会显示注销链接的下拉菜单。当我尝试定位 Logout 链接的 xpath 时,它不会去任何地方。有什么想法吗?

这是该元素的页面源代码。不知道这是否有任何想法。

<div data-v-5fa222fc="" class="user"><!----> <a data-v-5fa222fc="" class="user-menu">QA@some.com &nbsp; <img data-v-5fa222fc="" src="data:image/png;base64,iVBORw....uQmCC"></a></div>

【问题讨论】:

  • 可能只有当您单击向下箭头按钮时 html 才会出现?
  • 什么意思“哪儿也不去”?你得到异常还是什么也没发生?
  • 对不起,我的意思是当我右键单击元素时,它会突出显示 标签而不是元素路径,就好像该元素根本不存在一样。
  • @9009 您使用的是哪种Selenium 语言绑定艺术Java / Python / C# / NodeJS ?
  • 我正在使用 Java。

标签: java selenium selenium-webdriver xpath webdriver


【解决方案1】:

根据您共享的 HTML,单击用户图像需要诱导 WebDriverwait 以使下一个所需的元素可点击您可以使用以下任一解决方案:

  • partialLinkText:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.partialLinkText("QA@some.com"))).click();
    
  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.user a.user-menu img[src*='data:image/png;base64,']"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='user']//a[@class='user-menu']//img[contains(@src,'data:image/png')]"))).click();
    

【讨论】:

  • 非常感谢 - 我可以单击用户配置文件的链接并看到“注销”链接,但无法单击“注销”链接。因此,当我单击用户配置文件链接:“QA@some.com”时,会显示一个下拉菜单,其中包含“注销”链接。单击注销链接,应用程序将注销。但检查元素指向 html 的
    标签。它不会指向元素的路径。
  • @9009 您能否针对您的新要求提出一个新问题。 Stackoverflow 志愿者很乐意为您提供帮助。
  • 好的,添加另一个。
  • 我添加了一个新问题。这是链接:stackoverflow.com/questions/51148289/…
【解决方案2】:

试试这个 xpath:

//a[contains(., 'QA@some.com')]

【讨论】:

  • 我刚试过,它不识别元素。我试过这种方式 "//img[contains(@src,'image/png')]" 和你的方式,都失败了。
  • 当您尝试与之交互时元素是否可见?
  • 图片甚至没有被它点击。我的脚本有 .click 绑定到这个元素,当它可见时点击。但是,该解决方案确实会突出显示页面源中的元素。
猜你喜欢
相关资源
最近更新 更多
热门标签