使用 selenium 将 python 从 mac 迁移到 pc

Posted

技术标签:

【中文标题】使用 selenium 将 python 从 mac 迁移到 pc【英文标题】:Migrating python with selenium from mac to pc 【发布时间】:2014-11-29 00:06:17 【问题描述】:

对我来说,这应该很简单,但我遇到了一些问题。

我有一些 Python 代码可以在我的 Mac 上完美运行(最新的 OS py27),但现在我正试图将代码带到我的电脑上以安排和完全自动化(win8 py27)我收到代码错误否则工作正常。

代码是这样的:

def getElementsByxPath(mydriver,xPath,argKeys):

   try:

       a = mydriver.find_elements_by_xpath(xPath);
       a.send_keys(argKeys) 
       #error caused here. mac handles error on sending keys while it seems windows does not.
       return a;
   except:
       print "Unexpected error:", sys.exc_info()[0];
       return 0;


elem = olrHelper.getElementsByxPath(mydriver, ".//tr[@class='list-item']");

for e2 in elem:
    time.sleep(2)

    tryClick(e2)

    try:
        listingID = e2.get_attribute("data-id") #listingID is populated when I debug
        #additionally e2.is_displayed()==True



        field1 = extractAddress(protectedExtractText(olrHelper.getElementByxPath(mydriver, ".//h1", "")))
        #field1 is not populated and returns my default exception value. very odd.
    except:
        print 'error'

在我的 Mac 上,此代码有效(硒)。在我的电脑上这不起作用(硒)。

在 PC 上找不到 xpath 元素。

有没有人经历过类似的事情?我以为我很容易拥有跨操作系统功能。

谢谢

【问题讨论】:

这标有selenium 和python 但getElementsByxPath 不是Selenium 的Python 绑定中可用的调用(我浏览了整个源代码)。还有一堆似乎是你的代码调用(例如extraAddress(...))。您的 try 语句也没有终止。您应该更新您的问题,以便它显示当您仅使用实际 Selenium 调用并确保代码处于可执行状态时问题是如何发生的。 删除所有try/except 块并发布完整的错误回溯。谢谢。 (@Louis 第 5 行是他使用 selenium python 绑定来查找元素的地方。) 真的应该显示回溯。 什么是argKeys 崩溃时? 【参考方案1】:

我的第一个猜测是问题根本不在于您的 Python 代码,而在于 html 中的差异,因为它是由不同操作系统上的浏览器“修复”的。换句话说,我怀疑其中一个浏览器会稍微修改接收到的 HTML 以使渲染更容易。我会在这两个文件上“查看源代码”并对它们进行 WinDiff。

【讨论】:

嘿,不幸的是,我在 PC 上看到的元素与在 MAC 上的定义完全相同 进一步采用 Louis 的方法,我将创建一个本地 HTML 文档,它是仍然会产生错误的完整文档的最简单版本。这样做可以隔离错误的核心。 另外我建议将您的函数重命名为更准确的名称,例如 SendKeysToNodeAtPath 这真的是一个答案,还是只是一个评论? 这是一种方法,希望对您有所帮助。这个网站应该是关于帮助,而不是挑剔定义。

以上是关于使用 selenium 将 python 从 mac 迁移到 pc的主要内容,如果未能解决你的问题,请参考以下文章

将会话ID从Selenium传递到Python请求

使用 selenium 将 python 从 mac 迁移到 pc

如何使用 Selenium Python 将鼠标从元素向上移动 9 个像素

使用 Python 和 Selenium 将鼠标悬停在图形上

python3 selenium3 从框架实现代码学习selenium让你事半功倍

使用 Selenium 和 python 将文件下载到指定位置