我正在使用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然后使用它时,它返回一个可以单击的元素。