在.Net中使用PhantomJS selenium webdriver时,Element.Click未执行

时间:2013-10-29 16:28:38

标签: .net selenium selenium-webdriver phantomjs ghostdriver

我正在使用我们现有的工具,该工具使用Selenium IWebdriver的Firefox和Chrome实现完美运行。

我现在正在使用PhantomJS实现进行一些实验。 到现在为止还挺好。但是,只要我想点击一个按钮,它就什么都不做。

我可以检索元素,但是,仔细查看其属性,“Selected”属性声明如下:

    Error Message => 'Element is not selectable' caused by Request => {"headers":{"Accept":"application/json, image/png","Connection":"Close","Host":"localhost:37704"},"httpVersion":"1.1","method":"GET","url":"/selected","urlParsed":{"anchor":"","query":"","file":"selected","directory":"/","path":"/selected","relative":"/selected","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/selected","queryKey":{},"chunks":["selected"]},"urlOriginal":"/session/fcaf88a0-40b4-11e3-960d-bdce3224aacf/element/%3Awdc%3A1383063211142/selected"}

我会收集这是我的点击未执行的原因,但是,我无法从此错误消息中做出正面或反面。使用谷歌也没有帮助。

非常感谢任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:8)

我们与PhantomJS有很多类似的问题。

所以,要找出导致根本原因的几个步骤

  1. 设置屏幕大小(如评论中所示; PhantomJS默认使用400x300):

    driver.Manage().Window.Size = new Size(1920, 1080); //Size is type in System.Drawing"
    
  2. 用于验证您的元素实际可见:

    new WebDriverWait(driver,
    TimeSpan.FromSeconds(timeOut)).Until(ExpectedConditions.ElementExists((By.Id(login))));
    
  3. 点击带有Javascript的元素

    IJavaScriptExecutor js = _driver as IJavaScriptExecutor;
    js.ExecuteScript("arguments[0].click();", buttonToClick); //buttonToClick is IWebElement
    
  4. 对于 Java ,它将如下所示:

    1. 屏幕尺寸

      driver.manage().window().setSize(new Dimension(width, height));
      
    2. 验证元素是否可见

      WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
      wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("LOCATOR")));
      
    3. 点击JS

      JavascriptExecutor js = (JavascriptExecutor)driver;
      js.executeScript("arguments[0].click();", buttonToClick); //buttonToClick is WebElement