0

我正在尝试在 selenium 中自动化测试脚本。要自动化的活动场景:

  1. 它应该首先自动打开一个页面 URL。
  2. 点击左侧导航。
  3. 然后页面会填充一个下拉列表,它应该从下拉列表中选择一个固定值(比如 = 公司)
  4. 单击页面底部的创建按钮。

在我的情况下,代码一直在工作,直到下拉的人口,但之后代码无法单击创建按钮作为下一个操作。我在命令控制台中收到的错误消息如下:

元素名称 = 在会话 c48334c30....96ed 上找不到创建

这是我的代码:

public class testing {

    Selenium selenium = null;

    @Test
    public void submit() throws Exception {
        selenium = new DefaultSelenium("localhost", 4545, "*firefox", "URL");
        selenium.start();
        selenium.open("URL");
        selenium.windowFocus();
        selenium.windowMaximize();
        selenium.click("link=Work with company names");
        selenium.waitForPageToLoad("30000");
        selenium.select("//select[@name='company_id']", "label=company");
        selenium.waitForPageToLoad("3000");
        selenium.click("name = create");

    }
}

请向我提供解决此问题的建议,因为我无法理解为什么无法单击名为“创建”的按钮。我也尝试使用selenium.click("xpath=//button[matches(@id,'.*create')]");而不是,selenium.click("name = create")但它也不起作用。

请让我知道这个错误可能是什么问题,我该如何解决?谢谢。

4

3 回答 3

1

1)如果您提供页面的html代码会很好。

2) 在单击任何元素(在某些操作后加载)之前,我建议使用 WaitForElementPresent(来自 Selenium IDE),即确保该元素确实存在。Selenium 的工作速度相当快,它可能会在元素实际加载之前尝试单击该元素。

你可以使用这样的东西:

public bool waitForElementPresent(string Xpath) {
bool present = false;
for (int second = 0; ; second++) {
if (second >= 5) {
break;
}
if (IsElementPresent(Xpath)) {
present = true;
break;
}
Thread.Sleep(1000);
}
return present;
}
于 2013-04-03T07:28:01.673 回答
0

试试这个

selenium.click("//*[contains(@name,'create')]");
于 2013-04-02T16:52:07.567 回答
0

As you are using: selenium.waitForPageToLoad("3000"); Selenium is waiting for page to load. You want to add a pause, though thread.sleep isn't the best practise it can still work for you.

于 2014-12-23T09:53:31.510 回答