如何搜索包含unicode / arabic字母的元素?

时间:2016-08-30 08:58:13

标签: python selenium xpath unicode

我正在运行以下代码来查找包含Unicode阿拉伯字符的元素。如果我用英文字母替换XXX,下面的代码工作正常,但是,如果我用阿拉伯字母替换它,它就不会。

我检查了html页面,它有"< meta charset =" utf-8" >"所以我在第一行的Py脚本中设置字符集只是为了确保字母被解释为预期但仍然不起作用。

任何线索都非常感激。

由于

# coding=UTF8

from selenium import webdriver
# create a new Firefox session
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.norikoptic.com/Product/Women")
print driver.find_element_by_xpath(u"//*[contains(text(), 'XXX')]").text

2 个答案:

答案 0 :(得分:0)

尝试从contains(替换' XXX')中检查要从外部文件系统(例如属性文件,Excel等)中检查的文本。它可以正常工作。

乳清有' u'在您给出的示例中的xpath之前?

答案 1 :(得分:0)

我认为你没有在xpath中使用正确的unicode, 查看Ipython这里的演示

首先,我选择了一个节点来获取该阿拉伯语单词的相应unicode,因此在使用该unicode后修改了xpath,如下所示,这就是输出。

In [1]: response.xpath('//li[@class="lensItem"]/a/text()').extract()
Out[1]: [u'\u0639\u062f\u0633\u06cc']

In [2]: response.xpath(u'//a[contains(text(), "\u0639\u062f\u0633\u06cc")]/text()').extract()
Out[2]:
[u'\u0639\u062f\u0633\u06cc',
 u'\u0639\u062f\u0633\u06cc',
 u'\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u062f\u0633\u06cc \u0622\u0641\u062a\u0627\u0628\u06cc']

In [3]: a = response.xpath(u'//a[contains(text(), "\u0639\u062f\u0633\u06cc")]/text()').extract()

In [4]: for i in a:
    ...:     print i
    ...:
عدسی
عدسی
مشخصات عدسی آفتابی

修改

我使用Scrapy测试了xpath,但这也适用于selenium

In [6]: driver.find_element_by_xpath(u'//a[contains(text(), "\u0639\u062f\u0633\u06cc")]').text
Out[6]: u'\u0639\u062f\u0633\u06cc'

我希望这可以帮助您解决问题。