Java 如何根据提供的html构造xpath以单击注销链接

Java 如何根据提供的html构造xpath以单击注销链接,java,selenium,selenium-webdriver,xpath,webdriver,Java,Selenium,Selenium Webdriver,Xpath,Webdriver,我试图单击注销链接,使用SeleniumXPath注销应用程序。该网页具有用户图像链接,单击该链接时,将显示注销链接的下拉列表。当我试图找到注销链接的xpath时,它不会出现在任何地方。有什么想法吗 这是该元素的页面源代码。不知道这是否给了我们任何想法 <div data-v-5fa222fc="" class="user"><!----> <a data-v-5fa222fc="" class="user-menu">QA@some.com &nbs

我试图单击注销链接,使用SeleniumXPath注销应用程序。该网页具有用户图像链接,单击该链接时,将显示注销链接的下拉列表。当我试图找到注销链接的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>
QA@some.com   
试试这个xpath:

//a[contains(., 'QA@some.com')]
根据您共享的HTML,单击用户图像需要引导WebDriverwait,以便下一个所需元素可单击,您可以使用以下任一解决方案:

  • partialLinkText

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.partialLinkText("QA@some.com"))).click();
    
  • css选择器

    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();
    

可能只有当您单击向下箭头按钮时,html才会出现?您说的“哪儿也不去”是什么意思?出现异常或什么都没有发生?对不起,我的意思是,当我右键单击元素时,它会突出显示标记而不是元素路径,好像元素根本不在那里。@9009您使用的是哪种Selenium语言绑定艺术?Java/Python/C#/NodeJS?我正在使用Java。我只是尝试了一下,它无法识别元素。我尝试过这种方法“//img[contains(@src,'image/png')]”,而您的方法都失败了。当您尝试与元素交互时,元素是否可见?图像甚至没有被它单击。我的脚本有。单击绑定到此元素,在其可见时单击。但是,该解决方案确实突出显示了页面源中的元素。非常感谢-我可以单击用户配置文件的链接并看到“注销”链接,但无法单击注销链接。因此,当我单击“用户配置文件”链接时:QA@some.com,将显示一个下拉列表,其中包含“注销”链接。单击注销链接,应用程序将注销。但是inspect元素指向html的标记。它不会指向元素的路径。@9009能否请您提出一个新的问题和新的要求。Stackoverflow志愿者将很乐意帮助您。当然,添加另一个。我添加了一个新问题。以下是链接: