下拉单击无法在Selenium RC中工作

时间:2013-03-30 02:07:41

标签: java selenium selenium-rc selenium-ide

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

  1. 它应该首先自动打开页面URL。
  2. 点击左侧导航栏。
  3. 然后页面会显示一个下拉列表,它应该从下拉列表中选择一个固定值(例如=公司)
  4. 点击页面底部的创建按钮。
  5. 在我的情况下,代码正在工作,直到下拉的数量,但之后代码无法单击创建按钮作为下一个操作。我在命令控制台中收到的错误消息如下:

      

    元素名称=在会话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"),但它也没有用。

    请让我知道此错误可能出现的问题,如何解决?感谢。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

试试这个

selenium.click("//*[contains(@name,'create')]");

答案 2 :(得分:0)

正在使用:selenium.waitForPageToLoad(“3000”); Selenium正在等待页面加载。你想添加一个暂停,虽然thread.sleep不是它仍然可以为你工作的最佳实践。