首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用selenium获取画布后面的文本

如何使用selenium获取画布后面的文本
EN

Stack Overflow用户
提问于 2017-09-15 21:39:27
回答 1查看 1.9K关注 0票数 0

我想在画布后面得到一封电子邮件的文本,但不想找到一种方法。

我正在尝试以下代码

代码语言:javascript
复制
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://thatsthem.com/phone/806-241-6888')
table=driver.find_element_by_css_selector('.row.clearfix.mt15').get_attribute('innerHTML')

当我打印表时,我看不到画布后面的变量(比如var p1 = "makaya0";)。当我在浏览器上打开“查看页面源代码”时,可以在源代码中看到它们。我们如何访问这些变量并从中获取文本?

下面是页面源

代码语言:javascript
复制
<ul class="list-unstyled list-inline record-list">

    <li>
        <span class="label label-info"> <i class="fa fa-check"></i> Mobile</span>
    </li>

    <li>
        <i class="fa fa-phone" data-toggle="tooltip" title="Phone Number"></i>
        <h3>
                                                                                                    <span itemprop="telephone">806-241-6889</span>
                                                                                            </h3>
    </li>

    <li>
        <span class="label label-success"><i class="fa fa-check"></i> Valid Email Address</span>
    </li>

    <li>
        <i class="fa fa-envelope" data-toggle="tooltip" title="Email Address"></i>
        <canvas id="c59baf787024e2" width="160" height="20" class="email"></canvas>
        <script id="t2i">
            var p1 = "makaya0";
            var p2 = "923@yah";
            var p3 = "oo.com";
            var c59baf787024e2 = document.getElementById("c59baf787024e2");
            var c59baf787024e2_context = c59baf787024e2.getContext("2d");
            c59baf787024e2_context.fillStyle = "#353535";
            c59baf787024e2_context.font = "98% sans-serif";
            c59baf787024e2_context.textBaseline = "bottom";
            c59baf787024e2_context.fillText(p1 + p2 + p3, 0, 20);
            document.getElementById("t2i").parentElement.removeChild(document.getElementById("t2i"));
        </script>
    </li>

    <li itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        <i class="fa fa-home" data-toggle="tooltip" title="Address"></i>
        <a class="no-linky" href="https://thatsthem.com/address/8114-Sherman-Ave-Lubbock-TX-79423">

            <span itemprop="streetAddress">8114 Sherman Ave</span>
            <br/> <i class="fa-placeholder"></i>

            <span itemprop="addressLocality">Lubbock</span>

            <span itemprop="addressRegion">TX</span>

            <span itemprop="postalCode">79423</span>
        </a>
    </li>

</ul>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 21:59:22

您正在讨论的值是javascript变量。他们不是“短信”。

要通过selenium在javascript中运行脚本,您可以这样做:

代码语言:javascript
复制
output = self.driver.execute_script("return p1;")

并将javascript中变量p1的值放入python中的output变量中。

这假设变量p1在全局上下文中,而在您的情况下似乎是这样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46247802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档