Selenium 关于 selenium 定位的问题

old shen · 2018年04月18日 · 最后由 old shen 回复于 2018年04月22日 · 2151 次阅读

小弟不才,刚开始学习 selenium,目前在学习时有个想法是,输入一个产品编号,就可以自动定位到,并去购买操作。现在的问题是,不知道怎么去定位,因为是一个产品列表。如图所示:
我想输入的一个产品编号,然后定位到并去点击立即加入按钮。

下面是元素位置:

最佳回复
public void clickAddByProductNumber(WebDriver driver, String number) { 
        List<WebElement> dlList = driver.findElements(By.tagName("dl"));
        for (WebElement element: dlList) {
            // 找到dl下面第一个dt下的第一个span
            WebElement productNumberSpan = element.findElement(By.cssSelector("dt span"));
            if (productNumberSpan.getText().equals(number)) {
                // 找到dl下面第一个dd下的第一个h5下的第一个a标签
                element.findElement(By.cssSelector("dd h5 a")).click();
                return ;
            }
        }
    }

试试

共收到 13 条回复 时间 点赞

@Sorin 大神帮帮忙

xpath

//span[contains(text(),'XY18041887953')]/..//a[contains(text(),'立即加入')]

我不知道我写得对不对哦。要不试下?思路时定位下层控件,寻找同级控件。

杨腾 回复

额,我用 xpath 可以对某一个特定的产品定位,但是我想实现的是我从入口随意输入一个产品,检查这个页面,没有就报错,有的话,定位到,并去点击立即加入按钮。

杨腾 回复

不过,还是谢谢你了。

点开 “按钮” 后是产品详情页面吧 ,详情页页面地址中含有项目编号吧? 直接请求详情页页面地址,别从这点了

hellohell 回复

建议而已,不喜勿喷

hellohell 回复

嗯,谢谢啦。我感觉思路还是挺好的,等中午有时间了试试。最近业务有点忙。

old shen 回复
//span[contains(text(),ProductNo)]/..//a[contains(text(),'立即加入')]

把 XY18041887953 替换成你要输入产品编码变量 ProductNo 就可以了吧。。。输入一个 ProductNo 以后,检验这个路径的立即加入控件是否存在

public void clickAddByProductNumber(WebDriver driver, String number) { 
        List<WebElement> dlList = driver.findElements(By.tagName("dl"));
        for (WebElement element: dlList) {
            // 找到dl下面第一个dt下的第一个span
            WebElement productNumberSpan = element.findElement(By.cssSelector("dt span"));
            if (productNumberSpan.getText().equals(number)) {
                // 找到dl下面第一个dd下的第一个h5下的第一个a标签
                element.findElement(By.cssSelector("dd h5 a")).click();
                return ;
            }
        }
    }

试试

回复

谢谢了,按照你的思路实现了。

杨腾 回复

谢谢啦。

old shen 回复

这个你要使用 xpath 中的轴来定位元素,具体 xpath 轴的使用,你可以去http://www.w3school.com.cn/xpath/xpath_axes.asp了解下

Sorin 回复

好的,😀

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册