Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在xpath中通过键入文本选择文本输入?_Xpath_Selenium - Fatal编程技术网

如何在xpath中通过键入文本选择文本输入?

如何在xpath中通过键入文本选择文本输入?,xpath,selenium,Xpath,Selenium,在使用selenium创建自动测试时,当我试图通过文本在其中定位文本输入时,我遇到了一个问题。我使用Xpath和FirePath插件来检查结果 我的xpath是: //input[@context='@name' and contains(@class, 'edit-string') and contains(@value, 'testSection')] 当我删除最后一个条件时,它什么也不返回: //input[@context='@name' and contains(@class, 'e

在使用selenium创建自动测试时,当我试图通过文本在其中定位文本输入时,我遇到了一个问题。我使用Xpath和FirePath插件来检查结果

我的xpath是:

//input[@context='@name' and contains(@class, 'edit-string') and contains(@value, 'testSection')]
当我删除最后一个条件时,它什么也不返回:

//input[@context='@name' and contains(@class, 'edit-string')]
我找到了必要的部门

据我所知,问题在于value属性不包含类型化文本。Firebug控制台证明了页面上的jQuery库理论:

>>>> $("input.edit-string")[0].getAttribute("value")
null
>>>> $("input.edit-string")[0].value
"testSection"
>>>> $("input.edit-string")[0].getAttribute("context")
"@name"

您知道如何在xpath表达式中使用键入的文本吗?

请按照以下说明进行尝试

命令-->目标-->值 焦点-->类=编辑字符串 类型键-->类=编辑字符串-->任何文本方法: 根据给定的信息,XPath是 //输入[@context='@name'和contains@class,“编辑字符串”]

步骤1:

因此,输入具有包含字符串编辑字符串的类名。我们可以将上面的XPath转换为CSS选择器

css=.edit-string
步骤2:

尝试获取文本

$(".edit-string").getText();

您可以发布包含您正在查找的元素的xml吗?实际上,我刚刚成功地尝试通过文本查找输入元素。您的Selenium版本是什么,Selenium RC还是Selenium 2?火狐版本呢?你能给我们发一个完整的代码,看看其他东西是否有问题吗?您试过了吗?我在chrome驱动程序中使用selenium,但它无法使用指定的xpath定位元素。使用FirePath时也会产生相同的结果。所以它不依赖于selenium代码,因为firepath返回相同的结果。关于输入元素,它是在页面加载时动态创建的,并且没有显式的value属性。若要报告,只需在html中编写:$body.append$$asd.valasd;然后使用这个xpath://input[@value='asd']对JWiley进行访问。我不是在找元素,我是在找元素,出于某种原因,选择元素的唯一充分条件是字段内的文本类型,因此它不符合xml的含义。@Dmitry Aha!是的,那不行。明天我将进一步研究,但这里有一个快速的想法:当您通过“setAttributevalue,someValue”设置输入值时,会发生什么行为?此外,如果这个问题无法解决,您也可以通过JS检查来解决。这会有什么帮助?问题是如何找到文本类型的元素。在您的方法中,在应用选择器css=.edit string之后,您将收到几个元素。事实证明,没有java脚本是无法做到这一点的。