小编Pro*_*ner的帖子

Python Selenium等待用户单击按钮

内容:

  1. 我的脚本使用Selenium WebDriver启动到网站
  2. 用户在网站上填写一些内容
  3. 用户将单击一个按钮,这将弹出一个confirm()对话框,询问用户“您是否要提交数据”

我的意图:

我的脚本将一直等到用户单击按钮。一旦检测到用户单击了按钮,我的脚本将获取一个元素的值,然后(以某种方式)在对话框上单击“ 确定


题:

如何等待用户单击按钮?

然后如何在对话框上单击“确定


附加条款:

使用:chromedriver,Python 2.7

按钮: <input id="submitID" type="button" class="medium" value="Submit filled Data">


[编辑]一些代码片段:

对话框弹出是javascript弹出窗口:

    if (window.confirm("Are you sure you want to submit the data?")) {
        this.SaveData();
    }
Run Code Online (Sandbox Code Playgroud)

我的代码(对此问题进行了简化和修改):

from selenium import webdriver
from selenium.common.exceptions import WebDriverException

PATH_TO_CHROMEDRIVER = 'path/to/chromedriver'
URL = 'https://website-asking-user-to-fill-in-stuff.com'

driver = webdriver.Chrome(PATH_TO_CHROMEDRIVER)
driver.get(URL)

while True:
    # loop until user close the chrome.
    # If anyone has …
Run Code Online (Sandbox Code Playgroud)

python selenium click button selenium-webdriver

6
推荐指数
1
解决办法
1515
查看次数

关闭浏览器时,Python Selenium Detect

现在,我将其用作检测用户何时关闭浏览器的一种方法:

while True:
    try:
        # do stuff
    except WebDriverException:
        print 'User closed the browser'
        exit()
Run Code Online (Sandbox Code Playgroud)

但我发现这是非常不可靠的解决方案,因为 WebDriverException捕获了很多异常(如果不是全部),而且大多数不是由于用户关闭浏览器而导致的。

我的问题是:如何检测用户何时关闭浏览器?

python selenium exit selenium-webdriver

6
推荐指数
1
解决办法
2001
查看次数

安装pysqlcipher3的问题

所以即使pip install pysqlcipher3工作回来了Successfully installed pysqlcipher3,也没有。

根据我的研究,对于尝试安装 Sqlcipher 的 Windows 用户来说,这似乎是一个常见问题。

尝试 #1

首先,我尝试从 github 下载 pysqlcipher3 并通过 cmd(使用python setup.py buildpython seetup.py install)手动构建和安装它。

执行后,python3 setup.py build我遇到了一些错误(缺少一些要求,环境变量中没有 OPENSSL_CONF 等)但我修复了其中的大部分。

但是,我最终陷入了这个错误:

fatal error C1083: Cannot open include file: 'sqlcipher/sqlite3.h': No such file or directory.

尝试#2

我在某处读到(我认为)我必须在安装PySqlCipher3之前安装SQLCipher

经过检查,我发现我必须付费才能获得预构建的可执行文件或自己构建它。

所以我尝试按照本教程自己构建它。

安装完所有要求并按照步骤操作后,我到达了另一个死胡同。在最后一步(第 6 步)中,执行时nmake /f Makefile.msc出现此错误:

fatal error C1083: Cannot open include file: 'stdio.h': No such file …

python installation sqlcipher pysqlcipher

6
推荐指数
2
解决办法
4189
查看次数

使用 python selenium 在浏览器中编辑元素

如何在使用 Python 2.7 Selenium 打开的浏览器中编辑元素。假设我有这个元素:

<span id="some-random-number">100</span>
Run Code Online (Sandbox Code Playgroud)

我知道您可以通过以下方式找到文本:

driver.find_element_by_id("some-random-number").text
Run Code Online (Sandbox Code Playgroud)

但我希望元素的文本更改为 200,所以:

<span id="some-random-number">200</span>
Run Code Online (Sandbox Code Playgroud)

我该怎么做?除了文本之外,我还可以编辑元素的属性,例如:

<div class="something" style="transition: transform 1000ms bla bla bla"></div>
Run Code Online (Sandbox Code Playgroud)

我的脚本可以读取属性并将 1000 毫秒编辑为不同的值吗?

javascript python selenium attributes element

5
推荐指数
2
解决办法
1万
查看次数

用python通过麦克风播放mp3文件

有没有办法使用python(而不是任何外部软件)来像麦克风输入一样播放mp3文件?

例如,我有一个 mp3 文件和一个 python 脚本,它会通过我的麦克风播放它,所以语音室的其他人会听到它。正如我所说,这只是一个例子。

当然,我也做过一些研究。我发现我可以使用一个软件来创建一个虚拟设备并且做一些事情来获得结果。但我的观点是,是否可以不安装软件但使用某种 python 脚本?

python audio mp3 input microphone

4
推荐指数
2
解决办法
1万
查看次数

获取 gzip 解压文件大小的速度与gunzip 一样快(无需查找)

正如一些 StackOverflow 答案所示,您可以使用 .gzip 获得准确的 gzip 解压缩文件大小decompressedSize = gzipFile.seek(0, io.SEEK_END)。有些人还建议对小于 4 GiB 的文件执行此操作.seek(-4, 1)。但是,由于它会遍历整个文件直至结束,因此对于较大的文件来说非常耗时(对于大约 1 GiB 的解压数据,需要几秒钟才能找到结束)。

然后我尝试使用gunzip -l somefile.gz(同一文件),它设法立即输出当前文件大小以及解压缩时的文件大小。

我怎样才能以gunzip最快的速度获得解压缩的 gzip 文件的大小?

(PS 我尝试获取解压后的 gzip 大小的原因是解压时的 CLI 进度条)

python compression performance gzip gunzip

4
推荐指数
2
解决办法
1355
查看次数

Python Selenium,一个字母一个字母的send_keys

我怎样才能减慢.send_keys()?所以也许它发送的每封信之间可能会有 0.25 秒的延迟?

python time selenium python-2.7

3
推荐指数
1
解决办法
1902
查看次数

Python 带“百分比”的随机选择

前言

它看起来像是几个 stackoverflow 问题的重复,但我的情况(可能)有点独特。

我的情况

我有一本字典。键是字符串整数

我希望 python 脚本随机选择N

该值是它被选择的可能性。密钥的值越高,随机选择密钥的机会就越大。

我的解决方案

因此,利用其他一些 StackOverflow 帖子和互联网的力量,我设法使用Weighted Random解决了这个问题。

DICT_VAR= {'best':308281009, 'good':7066325, 'meh':26884, 'bad':71, 'terrible':16, 'never':0}

list_var = []
for i in DICT_VAR.keys():
    list_var.extend([i]*DICT_VAR[i])

print random.sample(list_var, 2) # get 2 random choice I suppose
Run Code Online (Sandbox Code Playgroud)

问题(陷阱)

正如您可能注意到的,字典中的值可以非常大(可以无限大),也可以小到 0(零是最小的,没有负数)。

运行这段代码(使用更大的数字)会导致我的计算机冻结并且没有响应,直到我硬重置它。

我的问题

我该如何处理这种情况?有没有其他适合我的情况的随机选择方法,因为加权随机是当前情况下最糟糕的解决方案。

python random dictionary biginteger percentage

3
推荐指数
1
解决办法
1万
查看次数

Python Tkinter 输入板文本

我怎样才能填充入口小部件,使其不会在小部件的边界处开始书写?在视觉上,与入口小部件边框有一点空间。

我的进度:

entry_widget.bind('<FocusIn>', lambda f: entry_widget.insert(0, ' '))
Run Code Online (Sandbox Code Playgroud)

当用户单击小部件时,这会添加一个空白空间,但此解决方案存在多个问题:

  1. 当点击退出并重新点击时,它会在空白区域或用户填写的任何文本的顶部添加另一个空间。我考虑过清除条目小部件,FocusOut但这也会清除用户可能编写的所有文本。

  2. 用户可以删除插入的空间

  3. 获取内容时,开头有额外的空间。虽然这是一个小问题,可以通过删除内容的第一个字符来解决。

可能还有更多我没有考虑的问题。

我认为我的代码前进的方式很糟糕,因此我问是否有人知道如何“正确”填充条目小部件?

python tkinter pad tkinter-entry

2
推荐指数
2
解决办法
7466
查看次数

Python 2.7严格条带

我有一个字符串 string = 'some.value:so this-can be:any.thing, even some.value: too'

我想剥掉'some.value:'左边的那个.

我失败的尝试:

>>> string.lstrip('some.value:')
' this-can be:any.thing, even some.value: too'
>>> string.replace('some.value:','')
'so this-can be:any.thing, even  too'
>>> string.split(':')[1]
'so this-can be'
Run Code Online (Sandbox Code Playgroud)

预期产量: so this-can be:any.thing, even some.value: too

我认为最接近我的答案是使用lstrip().我怎么能告诉它lstrip()完全删除整个短语?

[!]不使用任何库是首选!

注意:有一个类似的问题,但答案不适用于我.

python string strip

0
推荐指数
1
解决办法
47
查看次数