【问题标题】:TypeError: node.ownerDocument is null when using xpath in seleniumTypeError:在 selenium 中使用 xpath 时,node.ownerDocument 为空
【发布时间】: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


【解决方案1】:

试试这个:

for w in emails:
    w.get_attribute("title")

这将打印出来

information I need to extract;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多