我到处都看.Stackoverflow,各种留言板,py2exe网站,pyinstaller网站......没有任何帮助.包括selenium模块,特别是制作支持firefox的exe,似乎是不可能的.我开始拔头发因为使用py2exe和pyinstaller变得非常头疼.
py2exe和pyinstaller都有一些问题.
我的目标是创建一个单独的exe文件,没有任何额外的目录,以便其他人可以使用我的程序,如果他们没有python /模块.
使用py2exe,如果我这样创建一个setup.py文件
from distutils.core import setup
import py2exe
setup(
name='Ask Alfred',
data_files = [('Drivers', ['Drivers/chromedriver.exe',
'Drivers/webdriver.xpi','Drivers/webdriver_prefs.json'])],
version='1.0',
description='Find emails fast!',
author='Me',
windows=[{'script': 'alphy.py'}],
options={
'py2exe':
{
'skip_archive': False,
'optimize': 2,
}
}
)
Run Code Online (Sandbox Code Playgroud)
它将在dist文件夹和Drivers文件夹中创建一个带有我需要的文件的exe,但是,如果我尝试运行exe它会告诉我它找不到这些文件(因为它在库中查找它们). ZIP文件夹).最重要的是,我的GUI看起来很糟糕(字体现在是灰色而不是黑色,而具有白色背景的图像现在具有灰色背景).
使用pyinstaller,如果我在创建exe时使用"--onefile"标志它根本不起作用/ firefox和chrome都没有启动.
如果我选择不归档/不创建一个文件,我只能获得可行的结果.在这种情况下,pyinstaller提供了一个完全可行的解决方案.
如何在启动时隐藏与Chromedriver一起打开的命令提示符窗口?IE黑白对话窗口?
似乎有一种方法可以在C#文档中完成它,但我在Python文档中看不到任何内容.
我在这里已经看过一些相关的问题,但它们都与查找一个类然后提取属于该类的文本无关。
我的目标是自动化进入网站的过程,该网站可以查找给定名称和域名的电子邮件。到目前为止,我已经有了用于自动输入名称和域的代码,然后单击“搜索”,但是我的问题是等待结果加载。我基本上希望我的代码等待CSS类“ one”出现,然后提取与该类相关的文本,例如以下代码段:
<h3 class="one">Success</h3>
Run Code Online (Sandbox Code Playgroud)
提取文本“成功”。
我正在重读Stuart Reges的"构建Java程序",并注意到一些我不太了解的内容.它关于equals()
在任何新类中重载方法.让我们说我们定义一个类:
public Point{
private int x;
private int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
public getX(){
return this.x;
}
public getY(){
return this.y;
}
}
Run Code Online (Sandbox Code Playgroud)
本书建议,每当我们定义一个新类时,我们为新类定义的equals()方法应该这样写:
public boolean equals(Object o) {
if (o instanceof Point) {
Point other = (Point) o;
return x == other.x && y == other.y;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么equals方法应该接受泛型类型"Object"而不是"Point"类型的对象?该书说如果equals方法头与通用Object类的equals方法头不匹配,它将不会被重载(并且我得到它不会被重载,否则).然而,这有点不直观,因为它们实际上相等的唯一时间是同一类型......
当我将一个String对象作为参数传递给我的equals()方法时,该方法接受Point类型的参数而不是String,它正确地返回false.每当我们传递不同类型时,通用equals()方法(比较内存地址)是否适合账单?
我在启动Chrome或Firefox浏览器时尝试禁用所有Cookie.我在这里看过这些例子,但它们都是用Java编写的,有些Selenium代码与Python有所不同.
ChromeOptions options = new ChromeOptions();
Map prefs = new HashMap();
prefs.put("profile.default_content_settings.cookies", 2);
options.setExperimentalOptions("prefs", prefs);
driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)
我想在Python中完成上述操作.
这是一个数据结构问题,但也涉及实现。集合通常使用 BST 来实现,但我的教授希望我们知道在仅给出有限选项的情况下如何实现某些数据结构。所以他希望我们能够理解如何仅使用数组创建集合。
使用标准(未排序)数组我了解实现/复杂性......
void add(Student[] arr, Student findstu)
{
Student stu = new Student();
int i=0;
boolean found = false;
while(stu!=NULL)
{
stu = arr[i++];
if (stu==findstu)
{
found = true;
}
}
if (found==false)
{
arr[i+1] = findstu;
}
}
Run Code Online (Sandbox Code Playgroud)
添加/删除/包含几乎都是相同的代码,所有这些都将有第一个 while 循环,这将使它们的复杂度为 O(n)。
但如果我们使用排序数组,为什么包含的时间复杂度为 O(lgn),添加/删除的时间复杂度为 O(n)?
python ×3
selenium ×3
arrays ×1
c++ ×1
cookies ×1
css ×1
inheritance ×1
java ×1
overloading ×1
py2exe ×1
pyinstaller ×1
set ×1