【问题标题】:Accessing JQuery Auto complete with Selenium Webdriver使用 Selenium Webdriver 访问 JQuery Auto 完成
【发布时间】:2014-11-02 23:30:12
【问题描述】:

我正在尝试在输入单词后获取 JQuery 自动完成的 HTML。为此,我决定尝试 selenium webdriver。

我阅读了文档,我认为我遇到了一些问题。

1) 我没有找到搜索建议,尽管我很确定我选择正确

2) 我不知道如何从 IWebElement 获取 HTML 到字符串。

这是我的代码不起作用:

    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"));

谁能看出我哪里出错了?

【问题讨论】:

    标签: c# selenium-webdriver


    【解决方案1】:

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

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

    或者

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

    【讨论】:

    • 感谢@bcar 的回复。对我来说 Text 是一种属性,而不是一种方法。它似乎是用于内部文本而不是完整的 HTML。我也没有提到“WebElement”,是我遗漏了什么还是你的意思是“IWebElement”?
    • 我给了你java版本。 Iwebdriver 是接口。您可以尝试 javascriptexecutor 并调用 executeScript("your javascript") 并以这种方式获取您需要的内容。
    • 谢谢。我发现为什么它会返回空白。驱动程序的源代码不会像在开发人员工具中那样更新。 jquery用搜索结果填充了一个空的div,在我输入文本然后检查驱动程序上的页面源之后,它仍然是一个空的div,但chrome显示它具有内容。我现在有点困惑如何获取 html
    【解决方案2】:

    我会尝试 javascriptexecutor,见下文:(C# 版本)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2021-04-28
      • 2019-10-13
      相关资源
      最近更新 更多