python - 什么可能导致此 Python 代码有时失败?

标签 python selenium

class Websites
    default = 'https://google.com'
    spotify = 'https://spotify.com'
    facebook = 'https://facebook.com'
    twitter = 'https://twitter.com'

[...]

from websites import Websites

random_website = random.choice(list(vars(Websites).values()))
browser.get(random_website)  # This line fails like 30-50% of the time

请注意,我在这里故意不使用字典,因为我想使用随机值来获取 key 。

调试,我发现它会随机设置成这样: random_website = {getset_descriptor} <attribute '__dict__' of 'Websites' objects>

我真的不确定为什么它不起作用,因为我已经多次测试了所有 URL。

另请注意,此应用程序使用线程——此应用程序有多个实例(通常为 4 个),并且在任何给定时间大约有 1-2 个失败,以防万一。我对 Python 和 Selenium 还是很陌生(老实说,在编码方面仍然没有那么丰富的经验)。如果我可以提供更多可能有用的信息,请告诉我。

最佳答案

变量(网站)

  1. 是一个字典
  2. 里面有各种各样的对象,大部分都是继承自object

如果你打印它,你会看到各种各样的东西,比如未绑定(bind)的方法和其他普通的对象属性。发生这种情况是因为对象的 __dict__ 自动获取由 type 元类分配的一些默认元素。所有这些属性都应该是 double 。

因此您有两个选择:

  1. 坚持您当前的类(class)并过滤掉 duders:

    items = [v for k, v in vars(Website).items() if not k.startswith('__')]
    

    这不是推荐的方法。

  2. 只需使用只包含您想要的内容的普通词典即可。无论哪种方式,您都在调用 values。如果您真的不需要标签,只需使用列表即可。

关于python - 什么可能导致此 Python 代码有时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56136972/

相关文章:

python - 在 Tensorflow 的 input_fn 中生成无限随机训练数据

python - 使用 selenium 和 python 在 Linkedin 上添加连接

linux - Selenium ::WebDriver::Error with Firefox & Chrome

selenium - 是否可以使用 WebDriver 直接捕获 web 元素的屏幕截图?

python - 使用 Rest API 和 Tweepy 从推文下载完整的 JSON 数据,通过推文 ID 查询

python - web2py 计划任务重新创建(重置)数据库

java - Java 中的 Python 风格 round()

python - 按照 Django 网站上的教程进行操作时出错

python - 如何通过selenium RC保存网页

python - 当每大约 1 秒添加新的 div 时,如何使用 Python 从 Selenium 中的 div 中提取文本?