【发布时间】:2021-08-17 08:50:03
【问题描述】:
我有以下 HTML,我想使用 selenium 在 Firefox 中抓取。我想获取属性“title”的值(=我想提取的信息)以及它的文本(=我想提取的更多信息)。该元素位于 iframe 内。
<tr id="id1f7" class="new" data-oao-mailid="tmai16837d54b5315319" data-folderid="tfol11c18fac000026ec">
<td class="slct first">
<span class="form-input form-input-type-checkbox">
<input type="checkbox" id="id1f8" name="maillist:rowsCheckGroup" value="check0"/>
</span>
</td>
<td class="mark">
<a class="mail-read-mark marked" data-oao-hover="toggleRead" title="Als gelesen markieren" data-title-read="Als gelesen markieren" data-title-unread="Als ungelesen markieren">
<svg class="mail-read-icon" xmlns="http://www.w3.org/2000/svg">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#status-unread_24"></use>
</svg>
</a>
</td>
<td class="name" title="information I need to extract;">
more information I need to extract
</td>
<td class="text">
</td>
<td class="date">10:48 Uhr</td>
<td class="size" id="id1f9">63,17 KB</td>
</tr>
这是我正在使用的代码:
iframe = driver.find_elements_by_xpath("//div[@class='app-contents-wrapper']//iframe")[4]
driver.switch_to.frame(iframe)
time.sleep(3)
emails = driver.find_elements_by_xpath("//tr[contains('@data-oao-mailid',tmail) and ./td[@class='name']]")
for w in emails:
print(w.find_element_by_xpath(".//@title"))
但是,当我执行循环时,我不断收到错误“TypeError:node.ownerDocument 为空”。这很奇怪,因为当我打印出电子邮件元素时,
for w in emails:
print(w)
我得到的结果如下所示:
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="ad91d2a0-ed8f-8f44-9646-dad80647b266", element="243d171e-ad4c-d94b-bf8f-698daa971e0c")>
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="ad91d2a0-ed8f-8f44-9646-dad80647b266", element="040e26db-ecb1-a24c-af95-09f91d182e3c")>
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="ad91d2a0-ed8f-8f44-9646-dad80647b266", element="938c8595-e753-9141-926a-71d3fd81963d")>
所以我用来选择“电子邮件”元素的代码似乎有效。但是,当我尝试遍历这些元素并获取“标题”属性时,我的 xpath 选择器似乎无法选择它们。
【问题讨论】:
-
iframe = driver.find_elements_by_xpath("//div[@class='app-contents-wrapper']//iframe")[4]我相信这里你必须使用driver.find_element_by_xpath
标签: python selenium firefox xpath geckodriver