在selenium中运行Xpath的text()

2024-09-25 02:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我将介绍selenium实践,其中xpath在firefox xpath extesion中验证,而不是在PythonSelenium中验证。在

例如,转到here并应用xpath //span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br]它可以在firefox扩展中工作,但在硒表达式中却不起作用,比如driver.find_elements_by_xpath("//span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br]")

我面临的例外

    Traceback (most recent call last):
      Debug Probe, prompt 17, line 1
      File "C:\Python27\ArcGIS10.3\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 270, in find_elements_by_xpath
        return self.find_elements(by=By.XPATH, value=xpath)
      File "C:\Python27\ArcGIS10.3\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 739, in find_elements
        {'using': by, 'value': value})['value']
      File "C:\Python27\ArcGIS10.3\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute
        self.error_handler.check_response(response)
      File "C:\Python27\ArcGIS10.3\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.InvalidSelectorException: Message: The given selector //span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br] is either invalid or does not result in a WebElement. The following error occurred:
    InvalidSelectorError: The result of the xpath expression "//span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br]" is: [object Text]. It should be an element.

欢迎任何帮助。在


Tags: andtextinbrseleniumlinefindxpath
2条回答

Selenium只评估web元素。函数的作用是:返回一个对象。解决方案是在javascript函数中执行xpath并将其值返回到变量中。例如,对于python:

returnText = []
returnText = driver.execute_script("return  document.evaluate(\"//span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br]\", document, null, XPathResult.STRING_TYPE, null).stringValue;")

for item in returnText:
    print item

对于多个返回记录:

driver.get("http://www.hotleathers.com/Front-Printed-T-Shirts-C1232.aspx?s=OrderBy%20ASC&&v=all")

returnText = []
returnText = self.driver.execute_script("var iterator = document.evaluate(\"//span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br]\", document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); var arrayXpath = new Array();  var thisNode = iterator.iterateNext(); while (thisNode) {arrayXpath.push(thisNode.textContent);  thisNode = iterator.iterateNext(); }    return arrayXpath;")

for item in returnText:
    print item

纯Javascript代码是:

^{pr2}$

相关问题 更多 >