C# Selenium c单击没有名称或id的元素

C# Selenium c单击没有名称或id的元素,c#,selenium,selenium-chromedriver,C#,Selenium,Selenium Chromedriver,Selenium c如何单击此元素 类名是固定的,不会随机生成 <div class="l61y9joe j8otv06s a1itoznt qwtvmjv2 kiex77na lgsfgr3h mcogi7i5 ih1xi9zn ippphs35 a53abz89">Create Post</div> 按钮的屏幕截图也附在下面可以工作的xpath是 "//div[contains(text(),'Create Post')]"

Selenium c如何单击此元素

类名是固定的,不会随机生成

<div class="l61y9joe j8otv06s a1itoznt qwtvmjv2 kiex77na lgsfgr3h mcogi7i5 ih1xi9zn ippphs35 a53abz89">Create Post</div>

按钮的屏幕截图也附在下面

可以工作的xpath是

"//div[contains(text(),'Create Post')]"
完整代码:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(e => e.FindElement(By.XPath("//a/h3")))
    .click()
 
或者,如果要查找的元素位于iframe中:

   driver.SwitchTo().Frame(driver.FindElement(By.Xpath("xpath_to_frame")));
   WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
   wait.Until(e => e.FindElement(By.XPath("//a/h3")))
       .click()

我设法解决了这个问题,但没有意识到div包含在@DMart help me的Iframe答案中。谢谢大家的支持。

请将您的问题包括在您已经尝试过的C代码中。StackOverflow的期望是在你的问题中提供答案。按类选择?你控制这个网站的源代码吗?类是随机生成的,可能是为了阻止人们做你正在做的事情?另外,类属性中列出的类是随机的,还是每次都是相同的。您还可以添加存在于标记上方的HTML标记吗?这些将被视为标记的祖先标记。为什么不通过文本查找它?请将您的问题包含在代码中。注释中的代码太难阅读。我在这里遇到了一个异常:没有这样的元素:无法找到元素:{method:xpath,selector://div[containstext,'Create Post']}会话信息:chrome=87.0.4280.141您需要显式地等待元素。将添加代码。Iframe部件帮助我意识到,经过很长一段时间,它被包装在Iframe中。如果Iframe是解决方案,您可能希望选择此作为正确答案。
   driver.SwitchTo().Frame(driver.FindElement(By.Xpath("xpath_to_frame")));
   WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
   wait.Until(e => e.FindElement(By.XPath("//a/h3")))
       .click()