悬停后如何定位内部元素(Selenium)

How to locate inner element after hovering (Selenium)

我需要找到并单击“我的帐户”

我可以看到 parent div header-menu-dropdown account-item 然后有一个 child 那个 child 还有另一个 child 包含两个元素,即两个 href 文本

我可能会找到具有 header-menu-item with-link class 的元素数组,然后选择第一个元素来找到我需要的元素,但是有更好的方法吗?

你想要的方式,应该是这样的:

//div[@class='header-menu-item with-link']

然后你可以写:

//div[@class='header-menu-item with-link']/a

或者如果您有一个包含此 header-menu-item with-link

的网络元素

直接使用.//afindElement

最佳实践

但就个人而言,我不希望为此使用 xpath

请尝试

linkText

partialLinkText

因为您在 achor 标签 中查看的元素,linkText 应该可以工作。

工作解决方案如下(带有 linkText):

@FindBy(linkText = "My account")
private WebElement myAccount;

public MyAccountPage openMyAccountPage() {
    Actions actions = new Actions(driver);
    actions.moveToElement(username).perform();
    actions.moveToElement(myAccount).click().perform();
    return new MyAccountPage(driver);
    }

首先将鼠标悬停在 个人资料图标/您的姓名上,然后单击 元素。

By myAccountTxt = By.xpath("//a[text()='My account']");
By profileIcon = By.xpath("your profile icon xpath or custom xpath");
            
            // Moving cursor to the profile icon
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(profileIcon));
action.build().perform();

            // clicking the my account text
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(myAccountTxt));
wait.until(ExpectedConditions.visibilityOfElementLocated(myAccountTxt));
driver.findElement(myAccountTxt).click();