gpt4 book ai didi

python - 如何使用 selenium 和 python 使此代码更高效

转载 作者:行者123 更新时间:2023-12-01 08:58:51 26 4
gpt4 key购买 nike

您好,我编写了以下代码来访问网站,抛出代理并单击按钮,然后关闭浏览器并使用不同的代理重复有关设置。但是浏览器没有关闭,因此有一个构建的浏览器。这是代码:

from selenium import webdriver
import time
import os, re
import psutil
import signal

print("*" * 60)
print("LOL soul clicker")

print("*" * 60)


with open("working.txt", "r" ,encoding ="utf-8") as data:

text=data.readlines()
data.close()

browser = webdriver.Firefox()

def workclick(proxy, proxy_port):
target_website = "https:www.website.com"

proxy_profile = webdriver.FirefoxProfile()

proxy_profile.set_preference("network.proxy.type", 1)

proxy_profile.set_preference("network.proxy.http", proxy )

proxy_profile.set_preference("network.proxy.http_port", proxy_port)

proxy_profile.set_preference("network.proxy.ssl", proxy )

proxy_profile.set_preference("network.proxy.ssl_port", proxy_port)

browser = webdriver.Firefox(firefox_profile=proxy_profile)

target_website = browser.get(target_website)
time.sleep(6)
target_website.find_element_by_xpath('/html/body/div[7]/div[2] /div[1]').click()
target_website.find_element_by_xpath('/html/body/div[5]/div[2]/div[1]').click()
target_website.find_element_by_xpath('/html/body/div[1]/div/div/div[1]/div[2]/div/div/div[1]/div/div[1]/article/div[1]/div/div[2]/a/i').click()


browser.close()
def getpid():
x = ""
pn = "geckodriver.exe"
for proc in psutil.process_iter():
if proc.name() == pn:
x=int(str(proc).split(",")[0].split("=")[1])

try:
os.kill(x, signal.SIGTERM)
except:
os.kill(x, signal.SIGTERM)


k = len(text)
print(k)
for i in text:
try:
proxy, proxy_port = i.split(":")
proxy = str(proxy)
proxy_port = int(proxy_port)
workclick(proxy, proxy_port)
time.sleep(60)
getpid()

print(f"Success : {proxy} {k}")

k=k-1
except:
print(f"Failed : {proxy} {k}")
k=k-1
getpid()

所以我尝试简单地在空闲状态下逐段调试代码,但出于我的爱,我似乎无法让代码正常工作。基本上我希望能够通过代理多次单击按钮

所以我非常感谢尽可能多的帮助来让这个脚本以最好和最有效的方式运行,谢谢大家。

最佳答案

我的第一个建议

首先,不要使用 sleep() ,使用 wait Until 方法。它使您的测试更加稳定,因为 sleep(6) 每次都会等待 6 秒,这可能会导致计时问题,而且如果此时没有出现元素,您的代码将会失败。 ( https://selenium-python.readthedocs.io/waits.html )

之后您可以使用 browser.quit() 而不是 browser.close()。

第三,如果您要改进此代码,请尝试使用您自己的库。您可以编写包含您想要的自定义方法,然后将它们作为自定义库导入到您的测试文件中。

例如:您可以创建 SetProxy.py 脚本并在此文件中将代理定义为自定义函数,然后将它们调用到测试函数中。当您的代码扩展时,它将更易于维护。

关于python - 如何使用 selenium 和 python 使此代码更高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com