我正在使用Webdriver和Java。我的问题是该页面分为两个部分,两个部分均具有相同的名称//div[@class='sg-content-box sg-content-box--spaced']

我想单击用户David2211附近的按钮Aprobă(他的答案可以第一或第二出现)

我的问题是我不知道如何针对该特定用户名单击该特定区域中的按钮

java -  Selenium 在页面部分中搜索文本,然后单击其中的按钮-LMLPHP

最佳答案

对于此类事情,由于我们要查找包含特定文本的元素,因此必须使用XPath。在这种情况下,我们将寻找一个包含用户名“ David2211”的元素,然后一个包含文本“Aprobă”的按钮。我假设您将使用不同的用户名多次使用此代码,所以我将其放在函数中,以便于重用。

功能

public void approveAnswerByUsername(String username)
{
    driver.findElement(By.xpath("//a[contains(.,'" + username
            + "')]/ancestor::div[contains(@class, 'js-answer-element')]//div[contains(@class,'js-approve-button-text')][contains(.,'Aprobă')]")).click();
}


你这样称呼它

approveAnswerByUsername("David2211");


这个XPath非常大且复杂,但是它会查找包含指定用户名的A标记,在DOM上查找包含整个答案的父DIV,然后在DOM上向下导航以找到,其中包含“Aprobă”文本。

10-07 17:09