Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Selenium和Python查找元素内部的元素?_Python_Html_Css_Selenium Webdriver - Fatal编程技术网

如何使用Selenium和Python查找元素内部的元素?

如何使用Selenium和Python查找元素内部的元素?,python,html,css,selenium-webdriver,Python,Html,Css,Selenium Webdriver,在这个HTML示例中,我无法理解返回特定元素的语法 刮网 我尝试的是driver.find\u elements\u by\u tag\u name('div.calibre.div')并使用 ('div.calibre.div')|('div.calibre+div')和其他关于这些的变体。我已设法返回页面中的所有div元素,但我只想返回嵌套在calibre类中的所有元素(即book、titlepage、book和book)。有办法做到这一点吗 编辑:弗朗西斯科·索利马给了我正确的答案,我

在这个HTML示例中,我无法理解返回特定元素的语法


刮网
我尝试的是
driver.find\u elements\u by\u tag\u name('div.calibre.div')
并使用
('div.calibre.div')|('div.calibre+div')
和其他关于这些的变体。我已设法返回页面中的所有div元素,但我只想返回嵌套在calibre类中的所有元素(即book、titlepage、book和book)。有办法做到这一点吗

编辑:弗朗西斯科·索利马给了我正确的答案,我现在将与大家分享。在我最初的问题中,我没有注意到带有类
在HTML文档底部关闭,因此使用的语法返回的对象比预期的多。这是修改后的HTML,以防任何人需要此信息


要查找顶部
下的所有元素,即
语法将是驱动程序。按类名('titlepage')查找元素。按标签名('div')查找元素。,或者语法可以是驱动程序。按标签名('div.titlepage')查找元素。按标签名('div')查找元素。


这将返回
下的嵌套元素。

如果只有一个元素具有类“calibre”,并且它是您需要的元素,则可以执行以下操作:

driver.find_element_by_class_name('calibre').find_elements_by_tag_name('div')
当您执行
driver.find\u element\u by_class\u name('calibre')
(或任何其他
driver.find…
函数)时,该调用返回一个与driver具有相同方法的对象。换句话说,你得到了一个网页的一部分,你可以像浏览整个网页一样进行浏览


在这种情况下,
driver.find\u element\u by_class\u name('calibre')
将返回带有de element(其类为'calibre')的网页的一部分及其所有子项。要访问它的div,您应该使用
find\u elements\u by\u tag\u name

在您的示例中,我没有将“calibre”视为类名。我确实认为这是一个id的开始,这是非常不同的。有没有其他你没有包括的外部分区?还有,你想获取什么信息?只要问一下,你就会得到一本div.book和它下面的所有东西。另一个标题是标题页和下面的所有内容。等等我认为你需要更好地定义你的目标,才能得到正确的答案。@MivaScott对不起,我不小心把那部分注释掉了,现在就修好了。谢谢你的评论。我尝试返回类calibre的div下面的每个div,但不返回它之外的任何div。当我尝试返回整个页面上的每个div元素时,它不只是那些嵌套在calibre类下面的元素。编辑:哎哟,我想这个div包含了整个页面,这就是我出错的地方。你只需要calibre div的直接子级div?你的答案是正确的,我只是没有看到原始div的结尾,它在页面底部。我刚刚在另一个部分尝试了你的方法,效果很好。非常感谢。