我有一个Element Xpath
//img[@onclick="EditResource(this,'10','0');"]
我需要在循环中使用它,我将用变量i替换10。
driver.findElement(By.xpath("//img[@onclick='EditResource(this,'" + i +"','0');']"))
但它给出了一个错误没有像EditResource这样的元素在双引号中。
答案 0 :(得分:1)
您不应该使用 <resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<!-- colorPrimaryDark wont work on API level < 21 -->
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/mainBkgndHard</item>
<item name="android:textColor">@color/appTextColor</item>
<item name="android:buttonStyle">@style/ButtonTheme</item>
<!--<item name="android:fitsSystemWindows">true</item> hmmm, primaryColor expands on the statusbar now...-->
<!-- attempt taking actionbar shadow away -->
<item name="elevation">0dp</item>
<item name="android:windowContentOverlay">@null</item>
<!-- the following line breaks the build-->
<!--<item name="windowContentOverlay">@null</item>-->
<!-- attempt drawing underneath the actionbar - all fail as of 'com.android.support:appcompat-v7:23.1.1.'-->
<item name="windowActionBarOverlay">true</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!--<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">-->
<!--<item name="android:background">@color/colorActionBar</item>-->
<!--<item name="background">@color/colorActionBar</item>-->
<!--<item name="windowActionBarOverlay">true</item>-->
<!--<item name="android:windowActionBarOverlay">true</item>-->
<!--</style>-->
<style name="MyActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background">@color/colorActionBar</item>
<!--For compatibility-->
<item name="background">@color/colorActionBar</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>
事件中的所有细节(例如函数的参数),因为这些细节可能会发生变化,从而导致onclick
失败。
您可以在xpath
内使用contains()
方法,这样即使参数发生变化(出于任何原因),您的元素仍然可以找到:
xpath
答案 1 :(得分:0)
你可以轻松逃脱&#34;来自你的定位器:
driver.findElement(By.xpath("//img[@onclick=\"EditResource(this,'" + i +"','0');\"]"))
答案 2 :(得分:0)
简单易行,这是......
String str1 = "EditResource(this,'";
String str2 = "','0')']";
driver.findElement(By.xpath(str1+i+str2));
而且,您也可以在一行中完成
driver.findElement(By.xpath("//img[@onclick=\"EditResource(this,'" + i +"','0');\"]"));
\"
在运行xpath时为您提供'
。