我有一个有两个下拉菜单的网页.在一个下拉列表中选择一个选项将通过由blur事件触发的脚本更新另一个下拉列表中的选项列表.当焦点远离第一个下拉列表时,会触发模糊事件.这一切都可以在手动导航页面时正常工作.
但是,当通过WebDriver执行相同的步骤时,模糊事件永远不会被触发,因此下拉列表永远不会更新,从而导致我的脚本失败.
这是我首先选择的下拉列表的html(以及附加了onblur脚本的下拉列表:
<select id="newOrder:shipToAddressType" class="fieldRequired" onblur="PrimeFaces.ab({source:this,event:'blur',process:'newOrder:odShipData',update:'newO>rder:odShipData',partialSubmit:true,oncomplete:function(xhr,status,args)>{focusOnShipToZip();;}}, arguments[1]);" tabindex="47" size="1" name="newOrder:shipToAddressType">
<option selected="selected" value="125">Domestic</option>
<option value="126">International</option>
<option value="127">Military</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的:
像我手动浏览页面一样,我 在下拉列表中进行选择,然后在另一个字段中输入文本以将焦点从下拉列表中移开以触发模糊事件.这没用.我也试过跳出下拉菜单,也没有运气.
执行javascript来触发模糊事件 我知道javascript是正确的,因为我可以从firebug成功运行它:它触发第二个下拉列表的更新.但是,从WebDriver中它似乎没有触发任何东西.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('newOrder:shipToAddressType').blur()");
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢你的帮助.
编辑:我尝试在脚本字符串中添加"return".也没工作:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.getElementById('newOrder:shipToAddressType').blur()");
Run Code Online (Sandbox Code Playgroud) 我正在玩Calendar类并得到一些令人困惑的结果:
Calendar thisCal = Calendar.getInstance();
thisCal.clear();
thisCal.set(2012,12,8);
System.out.println("Year is: " + thisCal.get(Calendar.YEAR));
System.out.println("Month is: " + thisCal.get(Calendar.MONTH));
System.out.println("Day of Month is: " + thisCal.get(Calendar.DAY_OF_MONTH));
Run Code Online (Sandbox Code Playgroud)
输出:
年份是:2013年
月份是:0
每月的日子是:8
我很困惑!
我在NetBeans 7.1中创建了两个webservices客户端,模仿他们在他们网站上的教程.
我刚刚针对位于http位置的wsdl文件做了第一个,并且使用webservice没有问题
我目前正在使用的Web服务有一个位于https位置的wsdl文件.服务的设置顺利完成.与第一个的唯一区别是弹出窗口警告我安全证书,我接受了.服务,生成的源,META-INF等都已成功创建.wsdl文件的本地副本存储在我的电脑上的src/..文件夹下.
但是,一旦我运行我的代码,我收到此错误:
找不到' https://-domain-.net/-XYZServices-/-ABCXML?wsdl-'wsdl .将资源正确放置在类路径中.
我在Stackoverflow和其他地方发现了几个类似的问题,但没有真正解决我的问题.无论如何,我尝试了几个建议:
我检查了jax-ws-catalog.xml文件,发现上面引用的url映射到存储wsdl本地副本的本地文件夹.我检查了本地文件夹是否实际包含wsdl文件 - 它确实.我尝试在jax-ws-catalog.xml文件中编辑url以指向端口8080和8081 - 没有快乐.
我想这是一个安全问题,但不知道如何解决这个问题.
任何人都可以指出我在这里正确的方向.
仅供参考:我是java和NetBeans的新手.
谢谢.
这是我第一次尝试使用Selenium,但是在使用“ FindElement(By.Id”)时遇到了麻烦。我的脚本使用了多个By.Name方法,它们可以正常工作。
这是我的代码:
// Enter the user name and password
IWebElement username = FF_Browser.FindElement(By.Name("txtUserName"));
username.SendKeys("user1");
IWebElement password = FF_Browser.FindElement(By.Name("txtPassword"));
password.SendKeys("pw1");
// Click the Login button
FF_Browser.FindElement(By.Name("btnLogon")).Click();
try
{
bool loginResult = FF_Browser.FindElement(By.Id("lblUserName")).Text == "user1";
return loginResult;
}
catch (NoSuchElementException)
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
问题是FindElement(By.Id("lblUserName"))
永远找不到此元素。我在源代码中对in进行了两次和三次检查,这肯定是'lblUserName'
这是硒中的错误吗?
[编辑]
我现在已经在Firefox和IE驱动程序中尝试了此代码,并且都显示出相同的行为。我一定缺少基本的东西吗?在尝试查找元素之前,我尝试刷新浏览器,但结果相同。
java ×3
blur ×1
c# ×1
calendar ×1
dom-events ×1
https ×1
javascript ×1
netbeans-7 ×1
webdriver ×1
wsdl ×1