如何单击警报中的按钮?

时间:2018-10-24 21:28:00

标签: java selenium

我必须使用javaselenium使this page自动化。 我必须单击带有标签terms and conditions的链接,该链接会显示一个框,然后需要向下导航,然后单击“同意”按钮。

enter image description here

我已经尝试过:

        driver.click("//*[@id=\"field_terms\"]/td[2]/div/div/label[1]/a");  // Click on the link

它为我打开了盒子,但我紧追不舍。

我有2个问题:

  1. 如何控制弹出窗口?
  2. 如何单击 同意 按钮?

更新

关于滚动问题,我使用了以下无效的方法:

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

3 个答案:

答案 0 :(得分:1)

尝试使用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()

答案 1 :(得分:0)

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

JavascriptExecutor jsx = (JavascriptExecutor)driver;
jsx.executeScript("window.scrollBy(0,450)", "");

或者您也可以向上滚动到所需的元素...

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", your_WebElement);

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

希望这对您有帮助!

答案 2 :(得分:0)

这是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链接,加载页面就需要几秒钟,并且由于需要等待一段时间才能点击“同意”按钮。显然,“我同意”按钮已启用且可单击,而无需向下滚动,因此此处不需要滚动。