当按钮似乎是从JavaScript生成时,如何使用Selenium访问Button

时间:2014-06-29 13:58:41

标签: java javascript selenium selenium-webdriver

我尝试在网页上运行一些测试。我是一个初学者,直到现在一切都很顺利。

我正在更改网络表单中的某些值,现在要按"保存&出口"按钮。 enter image description here

但是当我使用webdriver(driver.getPageSource();)查看可用来源时,我看不到按钮,只看到下面的JavaScript。我将脚本缩短为一个按钮 - 我想点击的一个按钮。

function getToolbarCfg() {
  return [{ btnId: 2, icon:'images/obj16/tsave_.gif', text:'Save & Exit', qtip:'Save Record and Exit', handler:function() { cwc.getCenterWindow().tpzExecute('2',null,'detail'); } }];

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您可以让WebDriver明确等待元素出现。

    public static IWebElement WaitForElementToAppear(IWebDriver driver, int waitTime, By waitingElement)
    {
        IWebElement wait = new WebDriverWait(driver, TimeSpan.FromSeconds(waitTime)).Until(ExpectedConditions.ElementExists(waitingElement));
        return wait;
    }

阅读Selenium's WebDriver Wait Documentation以获得有关显式和隐式等待的详细解释。

编辑:

你也可以这样做:

public static IWebElement WaitForElementToAppear(IWebDriver driver, int waitTime, By waitingElement)
    {
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(waitTime));
        var element = wait.Until(d =>
        {
            var elem = driver.FindElement(waitingElement);
            if (elem.Enabled)
                return elem;
            else return null;
        });
        return element;
    }

这将每隔.5秒对元素执行ping操作,直到定义了waitTime,或者直到元素存在为止。

答案 1 :(得分:1)

找到解决方案:

按钮在单击时执行JavaScript。可以使用Selenium WebDriver直接调用该JavaScript函数。

((JavascriptExecutor) driver).executeScript("cwc.getCenterWindow().tpzExecute('3',null,'detail');");

希望这个答案可以帮助人们解决同样的问题。