需要悬停在5评级并点击它

时间:2017-08-25 06:54:26

标签: google-chrome selenium-webdriver

String exePath = "C:\\chromedriver.exe";
    System.setProperty("webdriver.chrome.driver", exePath);
    WebDriver driver = new ChromeDriver();
//  WebDriver driver=new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("https://wallethub.com/profile/test_insurance_company/");
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);


    driver.findElement(By.xpath(".//*[@id='footer_cta']/span/span")).click();

    // To move to 4th star over the review
    Actions action = new Actions(driver);
    action.moveToElement(driver.findElement(By.xpath(".//*[@id='wh-body-inner']/div[2]/div[3]/div[1]/div"))).perform();
//  action.moveToElement(driver.findElement(By.xpath(".//*[@id='wh-body-inner']/div[2]/div[3]/div[1]/div/a[4]")));
    action.moveToElement(driver.findElement(By.xpath(".//*[@id='wh-body-inner']/div[2]/div[3]/div[1]/div/a[5]"))).perform();
    action.click();[![enter image description here][1]][1]

尝试了代码,但它没有徘徊,也没有点击转到下一页

1 个答案:

答案 0 :(得分:0)

要执行此操作,您需要将鼠标悬停在评级部分上,然后公开实际包含评级星等的HTML隐藏部分。要查找初始元素有时很难,因为当您将鼠标悬停在右键单击时检查,元素发生变化。我通常做的是在Inspect附近找到一些东西,然后将各种元素悬停,直到页面上突出显示正确的元素。如果它包含文本,另一种查找方法是在HTML中搜索包含的文本。一旦找到正确的元素,您只需将其悬停,然后单击正确的星号。

由于我假设您将重复使用此代码,因此我将这样的内容写入函数中,以便于重用。

public void setRating(String stars)
{
    // hover over ratings panel to expose ratings stars
    new Actions(driver).moveToElement(driver.findElement(By.cssSelector("div.wh-rating-notes"))).perform();

    // click specified star
    driver.findElement(By.xpath("//div[@class='wh-rating-choices-holder']/a[.='" + stars + "']")).click();
}

然后你会称之为

setRating("5");

我已经测试了这段代码并且有效。