课程遍历问题
来源:8-6 遍历课程实战-2

oooooooooooooooo
2018-12-02
老师您好,在进行课程遍历时,遇到了获取文本有空格的问题。但是不大明白为什么有的名字中间一个空格,有的两个空格,拿出来的都是一个?这是为什么呢?
想到的解决方案有:先获取所有课程的父节点,再去获取所有子节点的方法去遍历所有课程。 除了这个方案还有其他方案可以解决此类型的问题吗?望老师能指点一下~
写回答
3回答
-
你好木有,对于这种空格不统一的确实没办法,你便利可以通过xpath,也可以通过list。如果不统一就list。肯定停下,因为你页面刷新了,找不到list对象了。
012018-12-03 -
oooooooooooooooo
提问者
2018-12-03
o(╯□╰)o
00 -
oooooooooooooooo
提问者
2018-12-03
再问下老师,为什么我这段代码遍历一次就停下了?
@Test public void CourseList() { driver.get("https://coding.imooc.com/"); driver.findElement(By.xpath("/html/body/a/i")).click(); driver.maxWindow(); // 获取所有课程的父节点 WebElement parentElement = driver.findElement(By.className("shizhan-course-list")); // 获得所有课程的子节点 List<WebElement> listChildElement=parentElement.findElements(By.className("shizhan-course-box")); for(int i=0;i<listChildElement.size();i++) { listChildElement.get(i).click(); driver.back(); driver.findElement(By.xpath("/html/body/a/i")).click(); } }
FAILED: CourseList org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
后来我在for循环中再重新获取父节点和子节点就可以遍历了。为什么呢?
@Test public void CourseList() { driver.get("https://coding.imooc.com/"); driver.findElement(By.xpath("/html/body/a/i")).click(); driver.maxWindow(); // 获取所有课程的父节点 WebElement parentElement = driver.findElement(By.className("shizhan-course-list")); // 获得所有课程的子节点 List<WebElement> listChildElement = parentElement.findElements(By.className("shizhan-course-box")); for (int i = 0; i < listChildElement.size(); i++) { // 获取所有课程的父节点 WebElement parentElement1 = driver.findElement(By.className("shizhan-course-list")); // 获得所有课程的子节点 List<WebElement> listChildElement1 = parentElement1.findElements(By.className("shizhan-course-box")); listChildElement1.get(i).click(); driver.back(); driver.findElement(By.xpath("/html/body/a/i")).click(); } }
00
相似问题