Selenium Webdriver中的Xpath创建

时间:2016-01-13 12:55:40

标签: selenium xpath webdriver

我有一个Element Xpath

//img[@onclick="EditResource(this,'10','0');"]

我需要在循环中使用它,我将用变量i替换10。

driver.findElement(By.xpath("//img[@onclick='EditResource(this,'" +  i +"','0');']"))

但它给出了一个错误没有像EditResource这样的元素在双引号中。

3 个答案:

答案 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时为您提供'