我正在尝试在selenium中自动化测试脚本。 要自动化的活动场景:
在我的情况下,代码正在工作,直到下拉的数量,但之后代码无法单击创建按钮作为下一个操作。我在命令控制台中收到的错误消息如下:
元素名称=在会话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")
,但它也没有用。
请让我知道此错误可能出现的问题,如何解决?感谢。
答案 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不是它仍然可以为你工作的最佳实践。