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();

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...