使用 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 selenium 将 python 从 mac 迁移到 pc
如何使用 Selenium Python 将鼠标从元素向上移动 9 个像素
使用 Python 和 Selenium 将鼠标悬停在图形上