51Testing软件测试论坛

标题: 怎样用这个属性定位元素 [打印本页]

作者: arron310    时间: 2015-11-6 11:12
标题: 怎样用这个属性定位元素
[attach]98231[/attach]该元素的属性:onclick="vote(2 , 13 , this);",其中13这个值会根据投票数变化,所以不能取,
想用contains,只取到这里'vote (2来定位,但是不知道怎样写,
我这样写了,但是报错:

WebElement hainanbutt = driver.findElement(By.xpath("//a[contains(@onclick,'vote (2')]"));
hainanbutt.click();



作者: joykao    时间: 2015-11-6 13:27
onclick=vote(2,13,this)这里的值会变么?如果你的页面有好多链接的onclick都包含vote(2)你会找到好多个,先找到投票按钮的父级元素,然后再定位,大体看了下该元素的上级元素class属性中有btn6这个应该是唯一的,代表第六个按钮,然后再定位下面的a标签就好了


作者: zhuruize    时间: 2015-11-6 16:18
By.xpath("//div[@class='simple-note-btn simple-note-btn6']//a")
试试

作者: arron310    时间: 2015-11-6 16:26
joykao 发表于 2015-11-6 13:27
onclick=vote(2,13,this)这里的值会变么?如果你的页面有好多链接的onclick都包含vote(2)你会找到好多个, ...

btn6这个属性不是唯一的,界面上有好多框,这个是区分框颜色的,同样颜色的框这个值都一样
作者: arron310    时间: 2015-11-6 16:30
joykao 发表于 2015-11-6 13:27
onclick=vote(2,13,this)这里的值会变么?如果你的页面有好多链接的onclick都包含vote(2)你会找到好多个, ...

onclick=vote(2,13,this)
只有onclick=vote(2这个值是固定的,能对应到每个框,后面的13也是会变的,根据投票的数量变化。[attach]98253[/attach]

作者: arron310    时间: 2015-11-6 16:32
zhuruize 发表于 2015-11-6 16:18
By.xpath("//div[@class='simple-note-btn simple-note-btn6']//a")
试试

这样定位不到,页面上有很多蓝色的框,class属性都是这个class='simple-note-btn simple-note-btn6'
[attach]98254[/attach]

作者: joykao    时间: 2015-11-6 16:52
arron310 发表于 2015-11-6 16:30
onclick=vote(2,13,this)
只有onclick=vote(2这个值是固定的,能对应到每个框,后面的13也是会变的,根 ...

好啦知道你的需求啦。。。用cssSelector   把这个值填进去 a[onclick*='vote(2']试试吧,括号应该不需要转义的吧
作者: arron310    时间: 2015-11-11 10:50
joykao 发表于 2015-11-6 16:52
好啦知道你的需求啦。。。用cssSelector   把这个值填进去 a[onclick*='vote(2']试试吧,括号应该不需要 ...

在嘛?
能具体说说怎么写吗?还是不会写
作者: joykao    时间: 2015-11-11 13:13
arron310 发表于 2015-11-11 10:50
在嘛?
能具体说说怎么写吗?还是不会写

WebElement hainanbutt = driver.findElement(By.cssSelector("a[onclick*='vote(2']"))
这样还是识别不了?要不你给个外部访问的链接给我,我去试试
作者: arron310    时间: 2015-11-11 15:42
joykao 发表于 2015-11-11 13:13
WebElement hainanbutt = driver.findElement(By.cssSelector("a[onclick*='vote(2']"))
这样还是识别不 ...

运行时还是提示错误…

[attach]98334[/attach]

作者: joykao    时间: 2015-11-11 16:56
本帖最后由 joykao 于 2015-11-11 16:58 编辑
arron310 发表于 2015-11-11 15:42
运行时还是提示错误…

给外网访问地址吧。。。还有是不是多frame呢?需要switch的。。。
作者: joykao    时间: 2015-11-11 17:14
我自己模仿你创建了个文件,完全没有问题呀
<html>
        <a href="javascript:;" onclick="vote(2,13,this);">pass</a>
        <script type="text/javascript" >
        function vote(){
        window.open("http://www.baidu.com");
        }
        </script>
</html>


public class Practice {
  
  @Test
  public void p() throws InterruptedException {
  //System.setProperty("webdriver.firefox.bin", "C:/Program Files/Mozilla Firefox/firefox.exe");
  System.setProperty("webdriver.chrome.driver", "webDriverServer/chromedriver.exe");
  WebDriver driver = new ChromeDriver();
  driver.get("file:///C:/Users/TEST/Desktop/a.html");
  driver.manage().window().maximize();
  driver.findElement(By.cssSelector("a[onclick*='vote(2']")).click();;
  }
}

完全可以执行,你是不是真的是多frame呀还是多页面?在找元素之前需要switch的
作者: alwans    时间: 2015-11-16 15:24
xpath还不能解决?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2