Python 使用双下划线按类名查找元素
我尝试按类名查找元素。不幸的是,我必须选择的类名包含双下划线,并引发了“no-this-element”错误Python 使用双下划线按类名查找元素,python,selenium,Python,Selenium,我尝试按类名查找元素。不幸的是,我必须选择的类名包含双下划线,并引发了“no-this-element”错误 div元素选择: <div class="result-list-entry__data"> ... </div> 当前结果(错误): selenium.common.exceptions.NoSuchElementException:消息:无此类 元素:找不到元素:{“方法”:“css” 选择器“,”选择器“:”.result-list-entry\uu da
div元素
选择:
<div class="result-list-entry__data">
...
</div>
当前结果(错误):
selenium.common.exceptions.NoSuchElementException:消息:无此类
元素:找不到元素:{“方法”:“css”
选择器“,”选择器“:”.result-list-entry\uu data“}(会话信息:
铬=77.0.3865.90)
是否可以转义双下划线?也许可以在选择器中使用contains查询。试着这样做:
last_named_class = result.find_element_by_xpath("//div[contains(@class, 'result-list')]")
希望这能有所帮助。首先,检查是否有iFrame。如果该元素位于iframe中,则在使用该元素执行任何操作之前,必须切换到该帧 您可以使用类属性上的部分字符串匹配来定位此元素,类似于
last_named_class = result.find_element_by_xpath("//*[contains(@class,'result-list-entry')]")
您可以尝试使用class=“result-list-entry\uu data”获取所有元素的列表 如果DOM中有多个类,请根据位置迭代elementResult数组
elementResult=[];
elementResult = driver.find_elements_by_class_name("result-list-entry__data");
否则
您可以使用前面建议的方法,包括以下两个方面:
last_named_class = result.find_element_by_xpath("//div[contains(@class, 'result-list') and contains(@class, 'data')]"
试试下面的东西
驱动程序。隐式等待(15)
last_named_class=result。通过_xpath(“/*[contains(@class,'result-list-entry')]”查找_元素
我无法用您提供的信息重现您的问题。请提供一个。您好,有代码和错误消息很好,但请注意,寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中复制它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。我可以保证双下划线不是问题所在。元素尚未加载,或者它位于iframe中。
last_named_class = result.find_element_by_xpath("//div[contains(@class, 'result-list') and contains(@class, 'data')]"
wait = WebDriverWait(driver, 10)
wait.until(ec.visibility_of_element_located((By.XPATH, "//*[contains(@class,'result-list-entry')]")))