【问题标题】:How to verify a random number generation and provide a calculation如何验证随机数生成并提供计算
【发布时间】:2019-10-08 20:36:29
【问题描述】:

我有一个网站https://www.ultimateqa.com/complicated-page/,网站上有一个要填写的表格,其中有一个生成随机数的验证码,并要求用户进行加法并输入一个数字。

我正在尝试使用 Java 在 Selenium 上执行此操作。

如何验证随机数,取它们,进行计算,然后将答案添加到输入字段?

【问题讨论】:

  • 使用模式验证一位数还是两位数? Pattern digitPattern = Pattern.compile("\\d{1}");Pattern digitPattern = Pattern.compile("\\d{2}");
  • 获取字符串 'X + Y = ',使用 split 和/或 replace 可以提取 X 和 Y,最后将它们转换为整数。
  • @pbugr 我该怎么做,我显然对此很陌生....我可以找到 et_pb_contact_captcha_question 的字段,但是如何提取 X + Y 有点多对我来说。
  • 这是我之前尝试过的 public void Capta() { WebElement X = driver.findElement(By.xpath("//*[@id=\ "et_pb_contact_form_0\"]/div[2]/form/div/div/p/span")); System.out.println("计算打印输出" + X);我要做的是找到数字并将值传递给'X'然后我将它们拆分,我遇到的问题是我使用的是 BY.Xpath,我认为这是定位元素而不是元素中的值。

标签: java selenium junit automation seetest


【解决方案1】:
  1. 找到持有验证码挑战的网络元素

    WebElement element = driver.findElement(By.className("et_pb_contact_captcha_question"));
    
  2. 将其文本放入String

    String captchaText = element.getText();
    
  3. 使用 ScriptEngine 来评估字符串值

    String captchaResult = new javax.script.ScriptEngineManager().getEngineByName("javascript").eval(captchaText).toString();
    
  4. 应该是这样的:

在更复杂的验证码挑战中,您无法在页面源中找到值,您将不得不使用 OCR 或图像识别库,例如 OpenCVTesseractSeeTest

【讨论】:

  • 谢谢,我会试试这个并回复你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 2020-03-05
  • 1970-01-01
  • 2011-05-16
相关资源
最近更新 更多