带有 div 内元素的 Web 驱动程序超时异常



我试图使用Selenium WebDriver(C#(点击YouTube视频下的评论区域(添加公众评论(。

但是Selenium不能识别id="header"的div下的元素。 在此处输入图像描述 此代码正常工作:

var element = driver
.FindElement(By.Id("comments"))
.FindElement(By.Id("header"));

但在这种情况下,它返回空集合:

var elements = driver
.FindElement(By.Id("comments"))
.FindElement(By.Id("header"))
.FindElements(By.Id("placeholder-area"));

我已经尝试过驱动程序。带有框架的 SwitchTo((,但它没有帮助

我也试过

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
wait.Until(d => d
.FindElement(By.Id("comments"))
.FindElement(By.Id("header")).Displayed);

我得到了Web驱动程序超时异常,在这里输入图像描述

在我尝试之后

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
wait.Until(d => d
.FindElement(By.Id("comments"))
.FindElement(By.Id("header")).Enabled);
var element = driver.FindElement(By.Id("comments"))
.FindElement(By.Id("header")).FindElement(By.Id("simple-box"));

我刚刚得到了简单盒子的NoSuchElementException

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
wait.Until(d => d.FindElement(By.Id("comments"))
.FindElement(By.Id("header")).FindElement(By.Id("simple-box")).Enabled);

我也尝试使用完整的 xpath 到当前元素

var element = driver
.FindElement(By.XPath("//*[@id='simple-box']"));
var element = driver.FindElement(By.XPath("/html/body/ytd-app/div/ytd-page-manager/ytd-watch-flexy/div[4]/div[1]/div/ytd-comments/ytd-item-section-renderer/div[1]/ytd-comments-header-renderer/div[5]"));

我刚刚尝试在YouTube中找到这些元素。看起来"评论"部分没有完全加载。尝试先滚动到该部分:

var comments = driver.FindElement(By.Id("comments"));
((IJavaScriptExecutor)driver).ExecuteScript($"window.scrollTo({comments.Location.X}, {comments.Location.Y})");

之后,将显示等待标头。

相关内容

  • 没有找到相关文章

最新更新