2014-10-27 109 views
0

我试图在输入一个单词后获取JQuery自动完成的HTML。为此,我决定尝试使用selenium webdriver。使用Selenium Webdriver访问JQuery Auto完成

我读过文档,我想我遇到了一些问题。

1)I'ts没有找到,虽然我敢肯定,我选择是正确的

2)我不知道如何让HTML从一个IWebElement字符串搜索建议。

这里是我的代码无法正常工作:

IWebDriver driver = new FirefoxDriver(); 

    driver.Navigate().GoToUrl("https://site.xxx/"); 

    IWebElement query = driver.FindElement(By.Name("stext")); 

    query.SendKeys("iphone"); 

    // Everything up to this point works, I put a wait in here just incase it takes a few seconds to load 
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(2)); 

    // This seems to come back empty but in developer tools for chrome I can see it 
    IWebElement results = driver.FindElement(By.ClassName("ac_results")); 

任何人都可以看到,我错了?

回答

0

在你的结果调用add .text();结束以获取元素的文本值。 Java语法。

String val = driver.findElement(By.ClassName("ac_results")).text(); 

或者

WebElement we driver.findElement(By.ClassName("ac_results")); 

String val = we.text(); 
+0

谢谢你的答复@bcar。对我来说,文字是一种财产,而不是一种方法。它似乎是内部文本而不是完整的HTML。另外我没有提及“WebElement”,我是否错过了某些东西,或者你的意思是“IWebElement”? – Guerrilla 2014-10-27 12:15:41

+0

我给你的Java版本。 Iwebdriver是界面。你可以尝试javascriptexecutor并调用executeScript(“你的javascript”),并抓住你需要的方式。 – bcar 2014-10-27 12:49:10

+0

谢谢。我发现它为什么会回到空白。驱动程序的源代码不像在开发人员工具中那样更新。有一个空的div,jquery用搜索结果填充,然后我输入文本,然后在驱动程序上检查页面源,它​​仍然是一个空的div,但是chrome显示它具有内容。现在我有点困惑如何抓住HTML – Guerrilla 2014-10-27 12:57:35

0

我想尝试的javascriptexecutor,见下图:(C#版)

IWebDriver driver; 
IJavaScriptExecutor jse = driver as IJavaScriptExecutor; 
string body = (string)jse.ExecuteScript("return document.body");