我想在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源本身。
感谢您阅读此书
答案 0 :(得分:0)
您可能要尝试单击此元素上方的链接。
<a data-redditstyle="true" class="randomstring" href="/"><svg></svg><div class="vzhy90YD0qH7ZDJi7xMGw">Log Out</div></a>
正如mjwills提到的那样,该类肯定有一天会更改,并且可能会破坏代码。采用另一种方法,可能会找到文本“注销”,然后向后处理所需的元素。
答案 1 :(得分:0)
您的 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
答案 2 :(得分:-1)
有时在 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();