我在 PC 上开发了一些代码,用于检查特定博客文章的点赞数。它在我使用最新版本的 CHrome 和 ChromeDriver for Python 的电脑上完美运行。
但是,当我使用 chromium 将此代码传输到我的 RPI 时。它仍然可以运行,但找不到 PC 版本所具有的任何元素。
这是完全相同的网页,如果我手动检查该元素就在那里,但 RPI 上的代码找不到它。
这是否与 RPI 相对于我的 PC 的内存量或其他一些硬件相关问题有关?
我认为这不重要,但我试图找到的元素是:
driver.find_elements_by_class_name('like-button.ignore-click.is-animated.has-label')
在 WordPress.com 网站上。
这与这个问题类似:
Selenium Error: element not visible (different behaviour on two computers)
但是,我有不同的代码,可以在 rpi 和 pc 上正常运行,即使元素在窗口中不可见,也可以找到元素
最佳答案
在您的代码块中,您尝试通过 find_elements_by_class_name(classname)
传递多个类
根据 selenium.webdriver.common.by
的文档实现:
class selenium.webdriver.common.by.By
Set of supported locator strategies.
CLASS_NAME = 'class name'
所以,
- 使用
find_element_by_class_name()
您将无法传递多个类名。
You can find a detailed discussion in Invalid selector: Compound class names not permitted using find_element_by_class_name with Webdriver and Python
实际上,在使用 like-button.ignore-click.is-animated.has-label
作为定位器时,您正在使用 css-selectors .
解决方案
作为解决方案,您可以使用以下任一 Locator Strategies :
使用
CSS_SELECTOR
:driver.find_element_by_css_selector(".like-button.ignore-click.is-animated.has-label") Note the added ^^^ . ^^^ character in the begining
使用
XPATH
:driver.find_element_by_xpath("//*[@class='like-button ignore-click is-animated has-label']")
关于python - Selenium 在 PC 和 RPI 上的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910880/