我正在使用C#和Selenium Chromedriver来做一个测试项目,以抓取谷歌地图。
在到达第二个循环之前,它运行良好:
var companyurl = company.GetAttribute("href");
返回:
OpenQA. Selenium.过时元素引用:元素未附加到页面文档
这是我所有的代码:
var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
ChromeOptions options = new ChromeOptions();
options.AddExcludedArgument("excludeSwitches");
options.AddExcludedArgument("useAutomationExtension");
options.AddArguments("ignore-certificate-errors");
options.AddArguments("start-maximized");
options.AddArguments("enable-automation");
options.AddArguments("--log-level=OFF");
//options.AddArguments("headless");
options.AddArguments("--disable-blink-features=AutomationControlled");
var driver = new ChromeDriver(chromeDriverService, options);
Actions builder = new Actions(driver);
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(15);
driver.Navigate().GoToUrl("https://www.google.co.uk/maps/search/lincoln+plumbers/");
try
{
driver.FindElement(By.CssSelector("#yDmH0d > c-wiz > div > div > div > div.NIoIEf > div.G4njw > div.AIC7ge > form > div > div > button > span")).Click();
}
catch
{
}
IList<IWebElement> companies = driver.FindElements(By.XPath("//*[@id=\"pane\"]/div/div[1]/div/div/div[4]/div[1]/div/div/a"));
foreach (var company in companies)
{
try
{
var companyurl = company.GetAttribute("href");
driver.Navigate().GoToUrl(companyurl);
var companyName = driver.FindElement(By.TagName("h1")).Text;
Console.WriteLine(companyName);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
Console.ReadLine();
任何帮助将不胜感激!
你一叫这个:
driver.Navigate().GoToUrl(companyurl);
... 你将收集到的所有元素引用“过时”,包括公司
。我猜您应该重新设计算法,以便在导航到其他页面使其元素引用过时之前,从第一页提取并保存所需的所有信息。
我得到了这个错误,当我试图点击一个下拉ID: 我想用这个代码: 有没有什么方法可以防止无限循环,或者更好的方法在我得到这个异常后点击id?
我正在构建一个刮网站的c#应用程序。我认为这个问题是因为页面在一次又一次提交表单后被重新加载而导致的。我必须从选择列表中选择一个选项,然后按回车键,等待页面重新加载新结果。但是重新加载后会导致此错误; 我的代码是这样的; 我也尝试过类似的东西; 时间不多了,我有个例外,时间不多了。
这是HTML结构如下所示 错误跟踪为:
我在我的selenium java项目中不断收到一条错误消息。
所以我正在尝试制作一个在flickr上运行的程序,我已经准备好了所有的东西,直到cookies弹出,它打败了我。 我正在尝试切换到这个iframe,这样我就可以使用“全部接受”按钮。然而,iframe的ID是动态的,所以为了避免这个问题,我尝试以标题为目标。 但是我现在收到了这个错误消息。 我已经尝试添加了10秒的等待时间来给它加载时间,我知道错误的原因是元素不再连接到DOM,但我不知道要使用什么
我正在尝试读取联系人页面中的数据,但遇到此异常。