Skip to main content
 首页 » 编程设计

python之如何使用 Selenium 找到对象

2025年05月04日10fff_TT

那是我的代码,我正在更改、修复、尝试其他模块,但仍然无法通过提取的 div 文本获得响应。

import selenium  
from selenium import webdriver 
 
driver = webdriver.Firefox()  
driver.get('http://www.helloworld.com/') 
element = driver.find_element_by_id('main') 
 
WebElement = driver.findElement(By.xpath("//div[@class='main']")); 
webElement.getText(); 

我正在尝试使用 bs4 包,但有一个大问题,因为我想要的数据只有在我登录网站时才有可能获得,而在 bs4 中响应就像来自访客帐户,无需登录。

这是我使用 Selenium 使用该代码得到的回溯:

Traceback (most recent call last): 
  File "D:/Python27/get text value div.py", line 8, in <module> 
    WebElement = driver.findElement(By.xpath("//div[@class='main']")); 
AttributeError: 'WebDriver' object has no attribute 'findElement' 

经过一个小的修复,我正在使用这个:

import selenium  
from selenium import webdriver 
 
driver = webdriver.Firefox()  
driver.get('http://www.helloworld.com/') 
element = driver.find_element_by_id('main') 
main_text = element.text 

在shell中print element.text后的响应是:

追溯(最近的调用最后):

  File "<pyshell#20>", line 1, in <module> 
    element.text 
  File "D:\Python27\lib\selenium\webdriver\remote\webelement.py", line 50, in text 
    return self._execute(Command.GET_ELEMENT_TEXT)['value'] 
  File "D:\Python27\lib\selenium\webdriver\remote\webelement.py", line 228, in _execute 
    return self._parent.execute(command, params) 
  File "D:\Python27\lib\selenium\webdriver\remote\webdriver.py", line 165, in execute 
    self.error_handler.check_response(response) 
  File "D:\Python27\lib\selenium\webdriver\remote\errorhandler.py", line 152, in check_response 
    raise exception_class(message, screen, stacktrace) 
WebDriverException: Message: u'\'[JavaScript Error: "a is null" {file: "file:///c:/dokume~1/tomek/lokale%20einstellungen/temp/tmpupvgr2/extensions/fxdriver@googlecode.com/components/command_processor.js" line: 7623}]\' when calling method: [nsICommandProcessor::execute]'  

请您参考如下方法:

你从哪里得到以下信息?对我来说看起来像 Java。

 WebElement = driver.findElement(By.xpath("//div[@class='main']")); 
 
webElement.getText(); 

尝试:

import selenium  
from selenium import webdriver 
 
driver = webdriver.Firefox()  
driver.get('http://www.helloworld.com/') 
element = driver.find_element_by_id('main') 
print element.text #There's no text under div main, what would you expect? 
 
footer = driver.find_element_by_id('footer') 
print footer.text 
# Should print out "Copyright ©2013 helloworld.com. All Rights Reserved. About Us   |  Privacy Policy "