C# Selenium c单击没有名称或id的元素
Selenium c如何单击此元素 类名是固定的,不会随机生成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')]"
<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()