Java 如何在警报中单击按钮?

Java 如何在警报中单击按钮?,java,selenium,Java,Selenium,我必须使用java和selenium实现自动化。 我必须单击带有标签条款和条件的链接,它会显示一个框,然后我需要向下导航,然后单击同意按钮 我已经试过: driver.click("//*[@id=\"field_terms\"]/td[2]/div/div/label[1]/a"); // Click on the link 它为我打开了盒子,但我在后面卡住了 我有两个问题: 如何在弹出窗口中搜索 如何单击同意按钮 更新: 关于滚动问题,我使用了以下不起作用的方法: pu

我必须使用
java
selenium
实现自动化。 我必须单击带有标签
条款和条件的链接,它会显示一个框,然后我需要向下导航,然后单击同意按钮

我已经试过:

        driver.click("//*[@id=\"field_terms\"]/td[2]/div/div/label[1]/a");  // Click on the link
它为我打开了盒子,但我在后面卡住了

我有两个问题:

  • 如何在弹出窗口中搜索
  • 如何单击同意按钮
  • 更新:

    关于滚动问题,我使用了以下不起作用的方法:

    public void scrollDown() {
            JavascriptExecutor jsx = (JavascriptExecutor)driver;
            jsx.executeScript("arguments[0].scrollTop = arguments[1];","window.scrollBy(0,450)", "");
        }
    

    让我们从滚动开始:只需使用JavaScript

    JavascriptExecutor jsx = (JavascriptExecutor)driver;
    jsx.executeScript("window.scrollBy(0,450)", "");
    
    或者你可以向上滚动到需要的元素

    ((JavascriptExecutor)driver.executeScript(“参数[0].ScrollingToView(true);”,您的Web元素)

    对于单击“我同意”,请使用如下XPATH:
    “//*[text()='I AGREE']”
    然后只需执行
    单击()


    希望这对你有帮助

    尝试使用CSS选择器定位“我同意”按钮

    'div[class="ui-dialog-buttonset"]>button[btnclass="primary"]'
    
    它在我的系统中起作用。我不是Java人,这是我用python编写的代码,供您参考

    driver = Chrome()
    driver.get('https://signup.insly.com/signup')
    
    terms_and_conditions = driver.find_element_by_link_text('terms and conditions')
    terms_and_conditions.click()
    
    import time
    time.sleep(2)
    
    i_agree = driver.find_element_by_css_selector(
                  'div[class="ui-dialog-buttonset"]>button[btnclass="primary"]'
              )
    i_agree.click()
    

    下面是Java[测试和工作]中的代码

        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/src/drivers/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://signup.insly.com/signup");
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.findElement(By.linkText("terms and conditions")).click();
        //Click the I AGREE button
        WebElement btnIagree = driver
                .findElement(By.xpath("//button[@btnclass='primary' and contains(text(),'I agree')]"));
        btnIagree.click();
        //Verify the check box for T&C is checked
        WebElement chkbxTnC=driver.findElement(By.xpath("//*[@id='agree_termsandconditions']/../span[@class='icon-check-empty icon-check']"));
        Assert.assertTrue(chkbxTnC.isDisplayed());
    

    问题是,只要你点击T&C链接,加载页面就需要几秒钟的时间,因为在点击“我同意”按钮之前需要等待。显然,“我同意”按钮是启用的,无需向下滚动即可单击,因此此处不需要滚动

    谢谢,我对解决按钮问题更感兴趣。我已经用你的答案更新了我的问题,我发现了新的错误got@KamyarParastesh我明天再试一次。。。希望您能尽快找到解决方案!这不是JS警报,因此
    警报
    对其无效。它与页面的其余部分一样是HTML。发布“我同意”按钮的相关HTML,我们可以提供帮助。@JeffC抱歉,但是您如何确定它不是一个警报,它是由
    css
    更改的?您应该查看不同的JS警报。看起来一点也不像他们。确认这一点的一种方法是右键单击它,查看是否有上下文菜单,是否可以检查HTML。如果可以,那么您知道这不是JS警报。如何向下滚动?要向下滚动/要使elemet可见,请参阅