我正在使用selenium和Python进行浏览器自动化。在此特定网页上,我需要为上传的视频选择类别。显示的类别包含要单击的复选框,但实际上,它们不是复选框。用鼠标单击它们时,元素的类会发生变化。
之前-
后-
我可以使用find_element_by_class_name和find_element_by_id找到元素
问题不在于定位元素,而在于单击它们。
我尝试过.click()方法,这显然不起作用
我试过ActionChains,这给了一个错误
rect未定义。
我尝试过execute_script方法,它不会抛出任何错误但也不会改变任何东西。
driver.execute_script("arguments[0].setAttribute('class','foo.active')", element)
有没有其他方法来检查该复选框?
更新:我已经意识到元素不在视图中,因为它会抛出错误
消息:元素无法滚动到视图中
此外,element.text返回一个空字符串。
当我在浏览器中看到网页时,没有任何东西阻挡视图。
这是代码:
Funny
我试过了:driver.find_element_by_xpath("//span[contains(text(),'Funny')]")
它抛出此错误:
selenium.common.exceptions.ElementNotInteractableException:消息:元素无法滚动到视图中
更新2:我还意识到使用contains(text())方法返回一个不在视图中的元素。另一方面,当我从浏览器复制XPath然后使用它时,它返回一个可以单击的元素。
博主在使用Selenium和Python进行浏览器自动化时遇到一个问题:网页上的视频分类元素表现为非复选框,单击会导致类名变化。尝试使用.find_element_by_class_name(), .find_element_by_id(), ActionChains以及.execute_script()方法均未成功。问题包括元素不在视图中和使用.contains(text())返回不可点击的元素。更新表明,直接使用XPath找到的元素可以被点击。
8961

被折叠的 条评论
为什么被折叠?



