【问题标题】:Does British Airways website implements site prevention automationBritish Airways 网站是否实施站点预防自动化
【发布时间】:2020-09-28 02:46:41
【问题描述】:

在练习 Selenium 时,我尝试将使用自动建议下拉菜单的 British Airways 网站自动化。手动输入几个字母时,下拉菜单会显示建议;自动化时,即使我使用等待方法,它们也不会。有人告诉我这样的网站会阻止自动化作为安全措施,但是是这样吗?

这是我的代码:

driver.get("https://www.britishairways.com/");
driver.manage().window().maximize();

driver.findElement(By.id("from")).click();
driver.findElement(By.id("from")).sendKeys("tor");

【问题讨论】:

  • 您可以并排启动 Selenium 控制的和 Chrome 并检查控制台的活动。当您手动单击并在框中键入时,可能会由于脚本而选择不同的控件。
  • @Martheen,控件是一样的。但是,什么是 Selenium 控制的?
  • 除非你使用无头选项,否则应该有由硒控制的铬窗口,对吧?
  • 啊,我明白你的意思了。但正如我所提到的,都是一样的。

标签: java selenium xpath css-selectors webdriverwait


【解决方案1】:

在这样的网站上工作时,我肯定会使用 xpath 或 css 选择器 iso "id"。 ID 通常是不太受信任的属性。

【讨论】:

    【解决方案2】:

    我在 British Airways 网站 https://www.britishairways.com/ 中没有找到任何机器人检测机制。

    要将字符序列发送到网站内的 From 字段,因为该元素是 Angular 元素,您需要将 WebDriverWait 用于 elementToBeClickable(),并且您可以使用以下Locator Strategies:

    • cssSelector:

      driver.get("https://www.britishairways.com/travel/home/public/en_in/");
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#from[name=\"searchEntry\"]"))).sendKeys("tor");
      
    • xpath:

      driver.get("https://www.britishairways.com/travel/home/public/en_in/");
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='from' and @name=\"searchEntry\"]"))).sendKeys("tor");
      

    浏览器快照:

    【讨论】:

    • 感谢您向我展示我不熟悉的方法,但是 - 正如您的屏幕截图所示 - 它也不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多