如何解决c#硒无法检测到元素
我想在C#中使用硒从reddit注销。我有一个小问题,希望有人能帮助我。这是我在c#中的以下代码:
var profile = Driver.FindElement(By.XPath("span[@class='DFKWwVItcycZV1bKUOyay']"));
//^is for oppening this dropdown menue | https://i.imgur.com/d8r4C6D.png
profile.Click();
var logout = Driver.FindElement(By.XPath("div[@class='vzhy90YD0qH7ZDJi7xMGw']"));
//to press on logout | https://i.imgur.com/ON2A92f.png
logout.Click();
网站资源的样子:
<span class="DFKWwVItcycZV1bKUOyay">
[...]
<div class="vzhy90YD0qH7ZDJi7xMGw">Log Out</div>
最好检查reddit源本身。
感谢您阅读此书
解决方法
您可能要尝试单击此元素上方的链接。
<a data-redditstyle="true" class="randomstring" href="/"><svg></svg><div class="vzhy90YD0qH7ZDJi7xMGw">Log Out</div></a>
正如mjwills提到的那样,该类肯定有一天会更改,并且可能会破坏代码。采用另一种方法,可能会找到文本“注销”,然后向后处理所需的元素。
,您的 XPath 无效。它们应该以 //
开头,例如
//div[@class='vzhy90YD0qH7ZDJi7xMGw']
第二个问题是您引用的类可能是随机生成的,并且会经常更改。我会使用“注销”文本来查找正确的元素。
Driver.FindElement(By.Id("email-collection-tooltip-id")).Click(); // opens the menu
Driver.FindElement(By.XPath("//a/div[text()='Log Out']")).Click(); // logs out
,
有时在 DOM 中很少有元素未设置为显示为 true,在这种情况下,我们需要用力单击该元素。 Actions 类是 Selenium 提供的处理键盘和鼠标事件的能力。
var logout = Driver.FindElement(By.Id("DemoAutomationID"));
Actions action = new Actions(driver);
action.MoveToElement(logout).Click().Perform();
//or
action.MoveToElement(logout).Click().Build().Perform();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。