所以我试图为tumblr创建一个bot,但我不能点击reblog按钮(弹出帖子中的Iframe中的那个)。我已经在互联网上搜索了一个解决方案,但没有任何运气,现在我不知道该怎么做。 这是我尝试过的方法:
IWebElement a = _driver.FindElement(By.XPath("//body[@id='search_actions_search']/div[9]/div/div/div/div/div[2]/div[2]/div/div[5]/div/div/div[3]/div/div/button"));
a.SendKeys(Keys.Enter);
然后我用了这个
_driver.FindElement(By.XPath("//body[@id='search_actions_search']/div[9]/div/div/div/div/div[2]/div[2]/div/div[5]/div/div/div[3]/div/div/button")).Click();
我也用过这个
var jsclick3 = _driver.FindElement(By.XPath("//body[@id='search_actions_search']/div[9]/div/div/div/div/div[2]/div[2]/div/div[5]/div/div/div[3]/div/div/button"));
IJavaScriptExecutor js = _driver as IJavaScriptExecutor;
if (js != null) js.ExecuteScript("arguments[0].click();", jsclick3);
所以人们可以告诉我如何点击该按钮!!并谢谢。
答案 0 :(得分:0)
如果它是iframe,您仍然可以像切换到新窗口一样进行。下面是一个示例代码,解释了它的使用(但代码是Java,但提供了一个清晰的想法):
WebDriver driver = new FirefoxDriver();
driver.get("http://www.w3schools.com/html/html_iframe.asp");
driver.switchTo().frame(0);
driver.findElement(By.xpath(".//*[@id='topnav']/div[1]/div[1]/a[4]")).click();
请注意,您需要找到正确的iframe的索引号才能切换到它并执行操作。
答案 1 :(得分:0)
使用implicitwait或explicitwait等待webdriver加载新添加的html元素,因为稍后通过javascript添加了对话框。
Thread.Sleep(15000);
//or
_driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));