【问题标题】:Can we access web elements of bank websites like ICICI, HDFC, SBI etc for automation using selenium Webdriver?我们可以使用 selenium Webdriver 访问 ICICI、HDFC、SBI 等银行网站的 Web 元素以实现自动化吗?
【发布时间】:2020-08-09 19:46:48
【问题描述】:

我正在尝试通过访问用户名、联系电话、电子邮件等表单的 Web 元素来自动化银行网站。但是当我尝试运行时,我无法访问它的 Web 元素,因为它异常失败“无法找到元素”,让我知道如何访问它。

icicibank.com/Personal-Banking/loans/personal-loan/index.page

代码:

WebElement firstName = driver.findElement(By.xpath("//*[@id=\"firstNameId\"]")); 
WebElement lastName = driver.findElement(By.id("lastNameId"));

【问题讨论】:

  • 一些代码示例?[html + java]
  • 我看不出与普通网站有什么不同。请编辑您的问题并指定问题。代码、HTML、链接等
  • 为什么要复制尝试创建自己的,网络上有很多可用的教程。
  • 我尝试使用 xpath, name, id fields 访问 webelement,但在运行时无法定位。

标签: java selenium iframe webdriver ui-automation


【解决方案1】:

您的元素在iframe 中。您必须先切换到它才能找到元素:

WebElement iframe = driver.findElement(By.xpath("//iframe"));
driver.switchTo().frame(iframe);

然后你可以像往常一样找到你的元素:

WebElement firstName = driver.findElement(By.xpath("//*[@id='firstNameId']")); 
WebElement lastName = driver.findElement(By.xpath("//*[@id='lastNameId']"));

在您处理完iframe 中的内容后,您必须像这样切换回默认内容:

driver.switchTo().defaultContent();

PS: 我也会像这样使用WebDriverWait

WebDriver driver = new ChromeDriver();
driver.get("https://www.icicibank.com/Personal-Banking/loans/personal-loan/index.page");

WebDriverWait wait = new WebDriverWait(driver, 10);

wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='myDivAdd']/a[2]"))).click(); // dismiss popup

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe"))); // switch to iframe

WebElement firstName = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='firstNameId']")));
firstName.click();
firstName.sendKeys("first name");

WebElement lastName = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='lastNameId']")));
lastName.click();
lastName.sendKeys("last name");

driver.switchTo().defaultContent();

WebDriverWait 将等待至少 10 秒,直到满足 ExpectedConditions 的要求,然后才执行操作。

注意:您必须添加一些导入:

import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.By;

更多关于WebDriverWait的信息可以在documentation找到。

【讨论】:

    【解决方案2】:

    您的问题分为两个部分,一个技术部分得到了回答,即您的元素位于 iframe 中,因此您的自动化代码无法找到它。

    您问题的第二部分(当您列出这么多银行时)是关于合法性以及该特定银行是否允许。一般的经验法则是 - Selenium 用于自动测试您正在正式开发的基于 Web 的应用程序(您自己的应用程序、您的组织等)。所以在我看来,如果你没有得到这些银行的授权,那么你不应该这样做。

    如果不是非法的,那么至少有可能会阻止用户 ID/帐户,因为大多数大公司都使用机器人检测算法。如果他们在您最初的请求中阻止您(并且只有您的 IP 被阻止)是很好的,但是如果您被允许继续前进直到输入 ID 和密码等..那么它对您来说太冒险了。这些网站是为人类使用而设计的,自动化可能会导致拒绝服务攻击(包括许多其他类型的攻击),因此大多数组织都会检测并阻止此类请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2016-02-29
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      相关资源
      最近更新 更多