网站推广做招商加盟,网站建设世纪明珠,网站优化关键词排名,长沙谷歌优化目录
1. 用Xpath查找数据时无法直接获取节点属性
2. 使用了WebDriverWait以后仍然无法找到元素
2.1. 分辨率原因
2.2. 需要滚动页面
2.3. 由于其他元素的遮挡 1. 用Xpath查找数据时无法直接获取节点属性
通常在我们使用xpath时#xff0c;可以使用class的方式直接获取节…目录
1. 用Xpath查找数据时无法直接获取节点属性
2. 使用了WebDriverWait以后仍然无法找到元素
2.1. 分辨率原因
2.2. 需要滚动页面
2.3. 由于其他元素的遮挡 1. 用Xpath查找数据时无法直接获取节点属性
通常在我们使用xpath时可以使用class的方式直接获取节点的属性如下所示
page.xpath(//div/a/class)但在Selenium中不支持这种用法只能在找到节点后使用get_attribute(name)方法来获取属性
page.xpath(//div/a).get_attribute(class)同样的Selenium同样不支持Xpath中的string()text()这类的方法只能获取元素节点。 2. 使用了WebDriverWait以后仍然无法找到元素
有很多时候一个简单的元素明明也加了显式等待但就是找不到代码在仔细查看过后也没有问题后多半是以下这几种情况
由于分辨率设置的原因查找的元素当前是不可见的。某些页面的元素是需要向下滚动页面才会加载的。由于某些其他元素的短暂遮挡所以无法定位到。
2.1. 分辨率原因
这时候应该设置好分辨率使当前元素能够显示到页面中。
2.2. 需要滚动页面
有些页面为了性能的考虑页面下方不在当前屏幕中的元素是不会加载的只有当页面向下滚动时才会继续加载。
而selenium本身不提供向下滚动的方法所以我们需要去用JS去滚动页面
driver.excute_script(window.scrollTo(0, document.body.scrollHeight))网上查到的一些滚动方式在Chrome上无效。但这一句是有效的。
2.3. 由于其他元素的遮挡
有时候因为一些弹出元素的原因如果还使用EC.presence_of_element_located()的话我们需要定位的元素就无法被找到这个时候我们就应该改变我们判断元素的方法
element WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, ))
)使用EC.visibility_of_element_located()方法可以在等待到当前元素可见后才获取元素。
在我们找不到元素或者跟元素无法交互时应该多去根据当前的情况灵活选择显式等待的判断方式。