Python 找到含硒反应按钮的最佳方法?
我有一个在OSX上与selenium配合良好的Python应用程序,我已经在Docker(Debian容器上的Python映像)中安装了这个应用程序。 当它在OSX上运行时,效果很好,但在debian上则不一样 这个Python脚本的目的是单击React按钮并解析HTTPPOST请求 此按钮的Xpath是Python 找到含硒反应按钮的最佳方法?,python,reactjs,selenium,xpath,Python,Reactjs,Selenium,Xpath,我有一个在OSX上与selenium配合良好的Python应用程序,我已经在Docker(Debian容器上的Python映像)中安装了这个应用程序。 当它在OSX上运行时,效果很好,但在debian上则不一样 这个Python脚本的目的是单击React按钮并解析HTTPPOST请求 此按钮的Xpath是 //*[@id='container']/main/div/div/div[1]/div[2]/form/div/div[2]/div[1]/button 这是此Url的“Recherche
//*[@id='container']/main/div/div/div[1]/div[2]/form/div/div[2]/div[1]/button
这是此Url的“Rechercher”按钮:
def headless(url):
url\u lbc=https://api.leboncoin.fr/finder/search'
对于范围(0,10)内的x:
http_tunnel_port,tor_进程,socks_port=tor_sub()
server=browsermob_server()
proxy\u b=browsermob\u代理(服务器、http\u隧道\u端口)
profile=profile\u firefox(代理服务器)
options=options\u firefox()
打印(‘测试初始化N°:’+str(x))
driver=webdriver.Firefox(可执行文件\u path='browserup/tools/geckodriverLinux',Firefox\u profile=profile,options=options)
proxy_b.new_har(“文件测试”,选项={'captureHeaders':True,'captureContent':True})
驱动程序。设置车窗位置(0,0)
驱动程序。设置窗口大小(randint(10242060),randint(10244100))
睡眠时间(randint(6,10))
获取驱动程序(url)
时间。睡眠(randint(2,3))
尝试:
如果driver.title==“您已被阻止”:
driver.save_屏幕截图(“文件名”+str(x)+“.png”)
印刷品(“禁令”)
firefox\u关闭(驱动程序、服务器)
其他:
driver.save_屏幕截图(“文件名”+str(x)+“.png”)
驱动程序。通过xpath(“//*[@id='container']/main/div/div/div[1]/div[2]/form/div/div[2]/div[1]/button”)查找元素。单击()
打印(“连接LBC”)
对于代理中的ent_b.har['log']['entries']:
如需在耳鼻喉科提出要求:
如果ent['request']['url']==url\u lbc和ent['request']['method']==POST':
header_raw=(ent['request']['headers'])
有效负载=(ent['request']['postData']['text'])
header={value['name']:header_raw}中的值的值['value']
打印(“测试编号:”+str(x)+“=>OK”)
返回收割台,有效载荷
时间。睡眠(1)
在OSX 8/10上,try是成功的,在Debian only 2/10上,我改进此脚本的第一个选项是找到等待react按钮并在加载DOM或按钮时单击它的最佳选项。
非常感谢您的帮助。使用
WebDriverWait
等待按钮可单击,然后单击。对于按钮,您可以使用//按钮[.='Rechercher']
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# ...
driver.get("https://www.leboncoin.fr/annonces/offres/lorraine/")
wait = WebDriverWait(driver, 5)
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[.='Rechercher']"))).click()
太好了,谢谢!