如何从反馈按钮selenium java获取Id

e5nszbig  于 2022-12-23  发布在  Java
关注(0)|答案(3)|浏览(154)

https://store.liverpoolfc.com/主页右侧有反馈按钮,我设法点击并打开反馈模式,但无法获得评级按钮的ID,我试图在反馈中添加ID、类名、xpath、输入的csselector,但它不起作用。
下面是我的代码:

By acceptCookies = By.id("onetrust-accept-btn-handler");
By feedbackHomeBtn = By.id("nebula_div_btn");
By feedbackBackBtn = By.xpath("//*[@id='wrapper_c59e-d4ab-ebe9-648a-b368-0624-c2bf-8d63']/div/neb-rating/div/form/span/span[10]/label");
By feedBackInput = By.name("rating");

public void acceptCookies(){
    try{
        driver.findElement(acceptCookies).click();
    }catch(Exception e){
        System.out.println("Exceptions Caught" + e.getMessage());
    }
}

public void feedbackFuncionality(){
    try{
        driver.findElement(feedbackHomeBtn).click();
        driver.findElement(feedbackBackBtn).click();
        driver.findElement(feedBackInput).click();

    }catch(Exception e){
        System.out.println("Exceptions Caught" + e.getMessage());
    }
}

And code in test.java

@BeforeTest
public void beforeTest(){
    WebDriverManager.chromedriver().setup();
    driver = new ChromeDriver();
    driver.manage().window().maximize();

    driver.get(url);    
}

@Test
public void sortItemsBySize() throws InterruptedException{
    FeedBackPage feedBackPage = new FeedBackPage(driver);
    feedBackPage.acceptCookies();
    Thread.sleep(5000);
    feedBackPage.feedbackFuncionality();
    Thread.sleep(3000);
}

@AfterTest
public void afterTest(){
    driver.quit();
}

我需要打开反馈模式,并点击评级1和10之间的btn。谁能给我一些提示如何获得此ID?谢谢

blpfk2vs

blpfk2vs1#

你可以用css选择器得到评级按钮

By.cssSelector("input[value='x']")

其中x = 0、1、2...

bksxznpy

bksxznpy2#

您正在尝试单击位于跨源iframe内部的元素
您需要切换框架,然后单击元素
您可以使用以下方式切换

driver.switchTo().frame("Your_frame_ID");
owfi6suc

owfi6suc3#

反馈评分表单位于iframe中。因此,在登录该页面并关闭cookie横幅并单击反馈按钮后,您需要切换到该iframe。在那里,您可以选择反馈评分,发送反馈并关闭对话框,如下面的代码所示。最后,您需要切换到默认内容。
下面的代码有效

driver.get("https://store.liverpoolfc.com/");
WebdriverUtils.clickVisible(driver,By.id("onetrust-accept-btn-handler"));
WebdriverUtils.clickVisible(driver,By.id("nebula_div_btn"));
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[id*='kampyleForm']")));
WebdriverUtils.clickVisible(driver,By.xpath("//label[contains(@class,'rating-label')][contains(.,'6')]"));
WebdriverUtils.clickVisible(driver,By.cssSelector(".panel-footer-web .submit-btn"));
WebdriverUtils.clickVisible(driver,By.cssSelector("button[aria-label='Close Survey']"));
driver.switchTo().defaultContent();

我在这里使用的方法clickVisible是这样实现的:
x一个一个一个一个x一个一个二个x

相关问题