为什么Google Chrome有时无法与元素进行互动

问题描述 投票:0回答:2

我正在学习硒,对此我是新手。我试图生成一个自动脚本来联系gmail注册页面,然后填写所有细节。以下是我想要简要介绍的内容:1。使用baseurl作为“www.google.com”启动谷歌浏览器2.点击Gmail链接(“图像”旁边的右上角)3。在Gmail登录页面上,单击“更多选项”4.单击“创建帐户”5.在测试数据中键入字段

我遇到的问题是,有时会成功点击创建帐户链接,有时则不会。

我使用selenium与java。

这是代码:

    System.setProperty("webdriver.chrome.driver","C:\\Users\\Admin\\Downloads\\TESTING\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();

    String baseUrl = "http:\\www.google.co.in";
    driver.get(baseUrl);
    System.out.println(driver.getTitle());

    WebDriverWait wait = new WebDriverWait(driver, 2);
    driver.findElement(By.xpath("//*[@id=\"gbw\"]/div/div/div[1]/div[1]/a")).click();
    driver.findElement(By.xpath("//*[@id=\"view_container\"]/form/div[2]/div/div[2]/div[2]/div")).click();

    wait.until(ExpectedConditions.elementToBeClickable(By.id("SIGNUP")));
    driver.findElement(By.className("z80M1")).click();
    driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    System.out.println(driver.getTitle());
    driver.findElement(By.id("FirstName")).sendKeys("abcd");
    System.out.println(driver.getTitle());

    driver.close();

有时会成功单击“创建帐户”链接,有时则不会。有时会遇到此错误:

线程“main”中的异常org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:{“method”:“id”,“selector”:“FirstName”}

任何帮助将受到高度赞赏。另外,如果我做错了,请告诉我。

java selenium selenium-webdriver
2个回答
0
投票

尝试增加显式/隐式等待时间。当前等待是2秒,似乎元素没有在2秒的时间限制内加载


0
投票

Selenium做的事情(至少是意图)很棒。它是如何做到的,一直以来,而且很可能永远是一个小小的元素。

一般来说,API有效,但不正确。每次我使用它,我都发现时间/事件等不能正常工作。也就是说,当Selenium认为它不是“完成”时。

提示:

  • 永远不要相信Selenium知道发生了什么
  • 总是在行动之间编码自己的暂停

通常情况下,我在Selenium通知页面加载后休息1秒钟。有时我需要更大的停顿。

虽然这会降低您的测试速度,但这通常不是什么大问题,因为行为测试套件通常需要相当长的时间(小时)才能完成。最好避免误报。

© www.soinside.com 2019 - 2024. All rights reserved.