如何在 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 区分计算机和人类的图灵测试。
大家好,我需要一些帮助。有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 区分计算机和人类的图灵测试。