我很难写出Android移动应用中存在的元素的Xpath
-
下面是xml:
<node index="5" text="" resource-id="com.mcdonalds.app:id/grid_item" class="android.widget.RelativeLayout" package="com.mcdonalds.app" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[366,601][714,949]">
<node index="0" text="Buy one Big Mac, get one FREE " resource-id="com.mcdonalds.app:id/name" class="android.widget.TextView" package="com.mcdonalds.app" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[378,841][702,907]" />
<node index="1" text="Expires 12/31/15" resource-id="com.mcdonalds.app:id/expiration" class="android.widget.TextView" package="com.mcdonalds.app" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[378,907][702,937]" />
</node>
我正在尝试点击具有属性text="Buy one Big Mac, get one FREE "
我尝试的xpath是 -
driver.findElementByXPath("//android.widget.TextView[@text='Buy one Big Mac, get one FREE ']").click();
和
driver.findElementByXPath("//android.widget.TextView[@text=\"Buy one Big Mac, get one FREE \"]").click();
这两种方法都不起作用。有没有人有类似的问题?
元素没有其他独特属性。
答案 0 :(得分:0)
为什么需要xpath !!只需使用名称并单击它。像这样:
driver.findElementByName("Buy one Big Mac, get one FREE
").click();
答案 1 :(得分:0)
我的评论中的public static void main (String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter an odd integer:");
int n = input.nextInt();
int[][] magic = new int[n][n];
// Place 1 in the center of the first row ( row 0)
int row = 0;
int col = (n-1)/2;
magic[row][col] = 1;
for(int i=2; i <=n*n; i++)
{
// Move up and right to a new position
col = col + 1;
row = row - 1;
// row is off the array
if (row == -1)
row = n - 1;
// col is off the array
if (col == n)
col = 0;
// if the place is taken, place the new number under the previous number
if( magic[row][col] !=0 )
{
row = row + 1;
if (row == n)
row = 0;
}
magic[row][col]=i;
}
for(int x = 0; x < n; x++)
{
for(int y=0; y < n; y++)
System.out.print("|"+magic[x][y] +"|\t");
System.out.println();
}
}
应该是逗号(=
),以使其成为有效的XPath表达式,如下所示:
,
或者如果您使用的XPath处理器将//android.widget.TextView[starts-with(@text, 'Buy one Big Mac, get one FREE')]
视为空格,则可以先使用
进行清理:
normalize-space()
答案 2 :(得分:-1)
由于元素具有明确的资源ID,因此使用它......它更可靠
driver.findElementBy(By.id("com.mcdonalds.app:id/name"))
然后你得到文本并验证是否需要。