Selenium中xpath的问题
本人新手 学习selenium中关于xpath有些不明白ByXpath.xpath()和By.xpath()的区别是什么
ByXpath.xpath() 我个人理解是里面是表达式
By.xpath() 我个人认为是绝对路径
然后我使用中遇见一些问题
xpath是 /x:html/x:body/x:div/x:div/x:dl/x:dt/x:a
我用这个方法可以定位到元素driver.findElement(By.xpath("/html/body/div/div/dl/dt/a"))
xpath 是id('formTab')/x:li/x:a 我用下面的方法也可以找到元素
driver.findElement(ByXPath.xpath("//*[@id='formTab']/li/a"))
但是当xpath是id('tousu_form2')/x:table/x:tbody/x:tr/x:td/x:label/x:input 时我用类似的方法缺找不到了 不知道为什么 我觉得和上面都一样呀
driver.findElement(ByXPath.xpath("//*[@id='tousu_form2']/table/tbody/tr/td/lable/input")); 定位不到了图片是我想定位提交问题的radio
哈问题有点长 希望大家耐心看完 多帮助一下 先谢谢了呀 额图片为什么没显示呀 回家我在重添加以下吧 By.xpath() 我个人认为是绝对路径这句话不对。。。一般直接就用By.xpath()。。。。ByXpath.xpath()没用过,也没啥意思。。。用xpath最好不要用绝对路径,还是用相对路径的好 回复 3# joykao
哦 那请问一下 我的xpath 是
id('tousu_form2')/x:table/x:tbody/x:tr/x:td/x:label/x:input这是用火狐xpath取的
我用
driver.findElement(ByXPath.xpath("//*[@id='tousu_form2']/table/tbody/tr/td/lable/input")); 为什么定位不到呢 是有什么问题吗 ,或者要是能帮我写一个就更好了哈 ,不知道为什么图片传不上来 等回家我在传吧 回复 4# chuodl
用firefox 下的xpath抓取的值经常会出问题,个人比较喜欢用chrome下的PsychoXpath 选择Element(short)来抓取xpath。。。但是说实话能不用xpath就不用。。。方便上一下元素的html代码截图么?看可不可以用其他方法代替xpath 回复 5# joykao 回复 5# joykao
回复图片了 好像要等管理员审核 看看吧 要是看不见 我再重传一个 回复 6# chuodl
可以看到了。。这个元素不要用xpath找。。。用cssSelector吧
By.cssSelector(input)。。。这个更靠谱。。。当然你也可以用name去找。。。不过name名字是type。。估计不是唯一属性。。。 最近怎么这么多xpath问题。。。。。这个东西很简单。
图上的这个元素我看了一下,用By.xpath("//input[@value='提交问题']")不就行了?我刚才试了一下,完全没问题啊。 谢谢 二位 哈 问题解决了 尤其@joykao 上次我的问题也是你帮着解答的 十分感谢 本帖最后由 Cris@Kaka 于 2013-12-5 16:38 编辑
点击这个新建,又要怎么写呢?我试过
driver.findElement(By.xpath("//td[@id='ToolBarContainer']/div/a")).click();
//driver.findElement(By.xpath("/html/body/table/tbody/tr/td/div/a")).click();
//driver.findElement(By.linkText("新建")).click();
//driver.findElement(By.xpath("//a[@title='新建']")).click();
这四个都不行。。但是IDE上都可以。
回复 8# joykao 回复 9# 六月天
请看楼上我的,我想一定是我们公司项目Firefox支持得不好的原因。。T_T 回复 11# Cris@Kaka
这么写
driver.findElement(By.cssSelector("a")).click(); 回复 13# joykao
我想说这样也是不行的。。:dizzy: 回复 14# Cris@Kaka
不是。可以确认一下你的步骤么?
1.点击了LJC
2.点击我的工作日程
然后右边自动跳到我的工作日程?貌似右边有起始页和我的工作日程2个tab嘛。。。是不是默认的是起始页么?那个右边我的工作日程可以点击么?你这个应该用的是frame吧?多个frame之间切换是需要switchto的。。就和不用的页面切换类似。。。你仔细看下到底在那个frame下。。然后先switchto那个frame再去点击那个新建按钮。。。 回复 15# joykao
点击LJC之前我就有switchto左边的frame,然后完了之后我又switchto中间的frame了。。还是不行。。至于两个tab。很有可能真的定位到起始页去了。。那要怎么切换到我的工作日程这个tab啊 回复 16# Cris@Kaka
。。。。其实我觉得吧。。多frame也不一定会有问题,问几个很愚蠢的问题哈:
1.当你进入到截图页面时,该页面的默认状态是怎样的?左边所有的树形结构都是关闭没展开的?还是有默认展开的部分?
2.当你点击LJC时URL在变化么?这时候右边是默认显示起始页的?
3.当你点击我的工作日程时URL 又有变化么?这时默认显示的我的工作日程?
4.上述步骤中页面的title有没有变化? 回复 17# joykao
首先这几个问题不愚蠢呀,应该都很关键吧嘿嘿
1.进入页面树形结构都是关闭的,需要点击去打开
2.URL一直没有变化, 系统登录进去就有显示起始页了,然后点击到我的日程管理业务才会跳到相应的新增加tab页面
3. URL 没变 这是就是显示我的工作日程了
4.页面的title一直没变 回复 18# Cris@Kaka
我这边也出现这种问题,不知道要怎么定位按钮。 回复 19# foxmessire
解决了相互通知声。。
页:
[1]
2