如何在 C# Selenium 中找到 reCAPTCHA 元素并单击它

How to Find the reCAPTCHA element and click on it in c# Selenium

大家好,我需要一些帮助。有URL:http://lisans.epdk.org.tr/epvys-web/faces/pages/lisans/petrolBayilik/petrolBayilikOzetSorgula.xhtml。正如您在屏幕截图中看到的,我需要单击验证码复选框。

https://i.stack.imgur.com/xjXaA.png

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;

namespace AkaryakitSelenium
{
    class Program
    {
        private static string AkaryakitLink = "http://lisans.epdk.org.tr/epvys-web/faces/pages/lisans/petrolBayilik/petrolBayilikOzetSorgula.xhtml";
        static void Main(string[] args)
        {
           
           IWebDriver driver = new ChromeDriver();
            IJavaScriptExecutor js = driver as IJavaScriptExecutor;
            driver.Navigate().GoToUrl(AkaryakitLink);
            var kategoriCol = driver.FindElements(By.CssSelector(".ui-selectonemenu-trigger.ui-state-default.ui-corner-right"));
            var x = kategoriCol[3];
            x.Click();
            var deneme = driver.FindElement(By.Id("petrolBayilikOzetSorguKriterleriForm:j_idt52_1"));
             deneme.Click();
           
            
            var check = driver.FindElement(By.Id("recaptcha-anchor"));
            
            check.Click();
        }
    }
}

最后是我面临的这个错误:

"OpenQA.Selenium.NoSuchElementException: 'no such element: Unable to locate element: {"method":"css selector","selector":"#recaptcha-anchor"}"

感谢您的帮助。

您可以不能使用 Selenium 绕过验证码。
它旨在避免自动访问 和许多其他地方所述的网页。

您要查找的元素在 iframe 中:

//iframe[@title='reCAPTCHA']

首先你需要像这样切换到 iframe :

new WebDriverWait(driver, TimeSpan.FromSeconds(3)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.XPath("//iframe[@title='reCAPTCHA']")));

然后您可以对其执行 单击 :

var check = driver.FindElement(By.Id("recaptcha-anchor"));
check.Click();

PS :验证码并不意味着自动化。因为 Captcha 代表 CAPTCHA 代表全自动 Public 区分计算机和人类的图灵测试。