【问题标题】:How can I put Korean as an argument in find_element_by_link_text() in Python - Selenium?如何在 Python - Selenium 的 find_element_by_link_text() 中将韩语作为参数?
【发布时间】:2016-04-14 14:35:16
【问题描述】:

我在 Python 3.4 中使用 Selenium。

我尝试在find_element_by_link_text() 方法中放入一个韩语单词作为参数,但它不起作用。

我的意思是它没有产生任何错误,但它找不到任何文本为韩语的超链接。

下面是一些示例代码:

from selenium import webdriver

browser = webdriver.PhantomJS()
browser.get('www.certain-korean-web-page.com')
a = browser.find_element_by_link_text('한국말')
print(a)

即使页面源具有该元素,它也会引发NoSuchElementException(当然,我检查了一个英文元素并且它有效)。

是 unicode 问题吗?

谢谢。

【问题讨论】:

  • 你能提供一个可重现的例子吗?谢谢。
  • 添加示例完成:)
  • 当前示例无法重现,因为该 URL 中不存在任何内容。
  • 您的示例使用find_element_by_name(),而不是find_element_by_text()...
  • @taleinat 如果您想要韩国网站网址:naver.com。并纠正了我的错误:) 谢谢

标签: python selenium unicode


【解决方案1】:

在 naver.com 上找不到您的代码中提到的元素。但尝试使用另一个元素,它对我来说工作正常。代码如下。

# coding=utf-8
from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://www.naver.com/')
a = browser.find_element_by_link_text('네이버뉴스')
print(a)

【讨论】:

    【解决方案2】:

    首先,您必须在 project_file.py 的顶部添加以下行:

    # -*- coding: utf-8 -*-
    

    然后包括这一行:

    a = browser.find_element_by_link_text(u'한국말')
    

    这肯定会奏效。

    【讨论】:

    • 只有在源文件保存为 UTF-8 的情况下才能确定。注释只声明了源编码,所以如果不是UTF-8就不行。
    • 恐怕我不同意你的看法。 python有解释器,所以每当文件运行时,python解释器都会读取utf-8编码。所以,当我们想在源代码中编写utf-8内容时,它必须存在于源代码中。另一方面,(u'한국말') 正好在这种情况下为我工作。所以请让我知道我的脚本问题出在哪里。谢谢亲爱的
    • 源编码注释告诉 Python 解释器用什么字节来编码文件。尝试您的代码,但将其保存为 UTF-8 以外的编码。祝你好运!
    • 感谢您的示例。我以为问题出在别的地方
    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多