嗨,我正在使用Selenium Webdriver,我尝试通过传递Java变量来访问有效ID来执行jQuery脚本。
这是代码。
int move = 3;
String date = "2011-03-05";
String script = "$('#date_of_birth-'+move+).datepicker('update', '+date+')";
js.executeAsyncScript(script, 1000);
我想在jQuery函数中同时使用move和date变量。
答案 0 :(得分:0)
如果您希望字符串连接发生在Java本身内,那么它必须在目标JavaScript字符串的外部内进行。您目前正在做的是在JavaScript字符串中插入文字字符串move
和date
。
String script = "$('#date_of_birth-'" + move + "').datepicker('update', '" + date + "')";
但是,我们可以在此处使用StringBuilder
,这将使内容更易于阅读(并且可能运行得更快):
StringBuilder sb = new StringBuilder("");
sb.append("$('#date_of_birth-'");
sb.append(move);
sb.append("').datepicker('update', '");
sb.append(date);
sb.append("')");
String script = sb.toString();
答案 1 :(得分:0)
经过长期的努力和调试,我找到了解决方案。
这是将Java变量传递给jQuery函数的正确方法。
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageButton
android:id="@+id/actionbar_backbutton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="?attr/actionBarItemBackground"
android:scaleType="centerInside"
android:src="@drawable/ic_arrow_back_black_24dp" />
<TextView
android:id="@+id/actionbar_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="105dp"
android:layout_toRightOf="@id/actionbar_backbutton"
android:background="?attr/actionBarItemBackground"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@string/Easybook_com"
android:textColor="@color/colorBlackText"
android:textSize="20sp" />
<ImageButton
android:id="@+id/actionbar_homebutton"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:layout_toLeftOf="@+id/actionbar_drawerbutton"
android:layout_alignParentTop="true"
android:background="?attr/actionBarItemBackground"
android:scaleType="centerInside"
android:src="@drawable/ic_home_black" />
<ImageButton
android:id="@+id/actionbar_drawerbutton"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="?attr/actionBarItemBackground"
android:scaleType="centerInside"
android:src="@drawable/ic_drawer" />
<ImageView
android:id="@+id/actionbar_reddot"
android:layout_width="?attr/actionBarSize"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="?attr/actionBarItemBackground"
android:scaleType="centerInside" />
答案 2 :(得分:0)
您可以在应用程序的以下代码段中尝试一下吗?我猜这可能有效:-
存在的问题: $('#date_of_birth-'3) .datepicker('update','2011-03-05');
当前解决方案: $('#date_of_birth-3') .datepicker('update','2011-03-05');
片段: int move = 3; 字符串日期=“ 2011-03-05”;
String scripting = "$('#date_of_birth-" + move + "').datepicker('update', '" + date + "')";
System.out.println(scripting);
StringBuilder sb1 = new StringBuilder("");
sb1.append("$('#date_of_birth-");
sb1.append(move+"'");
sb1.append(").datepicker('update', '");
sb1.append(date);
sb1.append("')");
String script1 = sb1.toString();
System.out.println(script1);