如何用Selenium在instagram弹出框中向下滚动
我有一个使用Selenium的Python脚本来转到给定的Instagram配置文件,并在用户的关注者上迭代.在Instagram网站上,单击以查看关注者列表时,弹出式弹出窗口将打开列出的帐户(这是但是,在视觉上和HTML中,仅显示了12个帐户.为了查看更多人必须向下滚动,所以我尝试使用keys.page_down输入进行此操作. from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.options import Opt
14 2023-05-23
编程技术问答社区
我如何安装Geckodriver?
我试图在Python中与Selenium合作.但是,我不知道该怎么做,从 https://pypi.pypi.python.org/pypi/硒 Selenium要求驱动程序与所选浏览器接口.例如,Firefox需要geckodriver,该>需要在运行以下示例之前安装.确保它在您的路上,例如,将其放入/usr/bin or /usr/local/bin. 中 我正在运行Windows 7 32bit.我在这里找到了geckodriver: > 我主要使用Python的Anaconda分布与Excel一起工作,所以我不知道什么是"路径" 谢谢, 更新: 我更新了评论中所示的路径.这是完整的错误追溯. Microsoft Windows [版本6.1.7601] 版权(C)2009 Microsoft Corporation.保留所有权利. c:\ user \ user1> python python 3.5.2 | anaconda 4.
4 2023-05-21
编程技术问答社区
如何使用playwright打开新选项卡(例如,单击按钮以在新选项卡中打开新部分)
我正在寻找对当前情况的更简单的解决方案.例如,您打开Goog​​le(任何另一个网站),然后单击按钮(例如Gmail) - 使用playwright在新标签中打开此页面. let browser, page, context; describe('Check the main page view', function () { before(async () => { for (const browserType of ['chromium']) { browser = await playwright[browserType].launch({headless: false}); context = await browser.newContext(); page = await context.newPage(); await page.goto(baseUr
12 2023-04-25
编程技术问答社区
如何在剧作家中使用安装版本的Chrome?
我想使用铬而不是铬.通过提供可执行的路径,我可以在Puppeteer中实现同样的成就.在剧作家中,它不起作用,因为浏览器类型参数仅支持"铬,webkit,firefox' 在 const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: false, executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', }); const context = await browser.newContext(); const page = await context.newPage(); await page.goto('http://whatsmyu
2 2023-04-25
编程技术问答社区
如何安装和运行Firefox的Puppeteer
嗨,我正在做一些Web自动化.我正在尝试打开一个URL,并且在Chrome控制台中遇到了数据URL错误,因此我正在转到Firefox控制台,以获取Chrome Console问题中打开的无数据URL.问题是" NPM安装Puppeteer-Firefox"并不努力为Firefox安装Puppeteer.如何安装Firefox的Puppeteer并将其包含在代码中,以便我可以使用它? 代码由于数据URL错误而无法在Chrome中工作 const url = await page.evaluate(async () => { document.querySelector('.n3VNCb').src; }); url.toString(); await page.goto(url); 我输入的内容.这不起作用 npm i puppeteer-firefox 我从node.js命
16 2023-04-25
编程技术问答社区
如何通过puppeteer获得XHR请求的身体/JSON响应
我想从我与Puppeteer抓取的网站上获取JSON数据,但我不知道如何将请求的主体收回.这是我尝试的: const puppeteer = require('puppeteer') const results = []; (async () => { const browser = await puppeteer.launch({ headless: false }) const page = await browser.newPage() await page.goto("https://capuk.org/i-want-help/courses/cap-money-course/introduction", { waitUntil: 'networkidle2' }); await page.type('#search-form > input[type="text"]', 'bd14ew')
0 2023-04-25
编程技术问答社区
Puppeteer获取所有数据属性值
我的html doc是 如何在div中获得所有" data-thing"值(例如[" ABC1"," ABC2"," ABC3"]). const puppeteer = require('puppeteer'); const fs = require('fs'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); page.setViewport({width: 1440, height: 1200}) await page.goto('https://www.exam
28 2023-04-24
编程技术问答社区
uppeteer:获取Innerhtml
有人知道如何获得innerHTML或元素的文本吗?甚至更好;如何单击具有特定innerHTML的元素?这就是与普通JavaScript一起使用的方式: var found = false $(selector).each(function() { if (found) return; else if ($(this).text().replace(/[^0-9]/g, '') === '5' { $(this).trigger('click'); found = true } }); 事先感谢您的任何帮助! 解决方案 这就是我获得Innerhtml的方式: page.$eval(selector, (element) => { return element.innerHTML }) 其他解决方案 返回元素的内html 您可以使用以下方法返回 const inner_html = await p
46 2023-04-24
编程技术问答社区
Puppeteer等待页面/DOM更新 - 响应初始加载后添加的新项目
我想使用Puppeteer响应页面更新. 该页面显示项目,当我离开页面时,打开新项目可能会随着时间的推移而出现. 例如.每10秒添加一个新项目. 我可以使用以下内容在页面的初始负载上等待一项: await page.waitFor(".item"); console.log("the initial items have been loaded") 我该如何等待/捕获未来的物品? 我想实现这样的目标(伪代码): await page.goto('http://mysite'); await page.waitFor(".item"); // check items (=these initial items) // event when receiving new items: // check item(s) (= the additional [or all] items) 解决方案 您可以使用await page.exposeFunction('get
0 2023-04-24
编程技术问答社区
如何在Puppeteer的iframe元素中选择元素
由于ESPN不提供API,所以我试图使用木偶搜索有关我的幻想足球联盟的数据.但是,由于带有iframe元素嵌套的登录表单,我很难使用Puppeteer登录. 我去了 http://www.espn.com/login 并选择了iframe.除了做 ,我似乎无法选择iframe中的任何元素. frame.$('.main') 这是似乎可以获取带有登录表单的iframe的代码. const browser = await puppeteer.launch({headless:false}); const page = await browser.newPage(); await page.goto('http://www.espn.com/login') await page.waitForSelector("iframe"); const elementHandle = await page.$('div#disney
20 2023-04-24
编程技术问答社区
如何获得表格中的总行数 | Cypress
我有一个带有n行的桌子.如何获得表中存在的行总数? 我搜索一个名称,该特定名称在第x行中,如何获得该特定行的值. 解决方案 您可以使用.find解决两种情况. 获取表行计数: cy.get("#tableID") .find("tr") .then((row) => { //row.length will give you the row count cy.log(row.length); }); 要获得特定行的值(索引),您可以做这样的事情. cy.get("#Table Id") .find("tr") .then((rows) => { rows.toArray().forEach((element) => { if (element.innerHTML.includes("Your Value")) { //rows.index(el
32 2023-04-13
编程技术问答社区
如何用Python和Mechanize登录一个网站
我正在尝试登录网站 http://www.magickartenmarkt.de 区域( https://www.magickartenmarkt.de/?mainpage=showwants ).我看到了其他例子,但我不明白为什么我的方法不起作用.我确定了第一种方法的正确表格,但尚不清楚它是否有效. 在第二种方法中,RETURING网页向我表明我无法访问成员区域. 我会为任何帮助而高兴. import urllib2 import cookielib import urllib import requests import mechanize from mechanize._opener import urlopen from mechanize._form import ParseResponse USERNAME = 'Test' PASSWORD = 'bla123' URL = "http://www.magickartenmarkt.de" # fi
8 2023-03-31
编程技术问答社区
Selenium Webdriver vs Mechanize
我有兴趣以某些形式的我经常使用的网站自动化重复数据输入.到目前为止,我查找的工具将以无头的方式为此提供支持,这可能是Selenium Webdriver和机械化. 我的问题是,使用曾经与另一个相比有根本的技术差异吗?硒主要用于测试.我还注意到有些人使用它来确切地做我要寻找的事情,这是自动化数据输入的.在这种情况下,测试成为第二好. 是否有理由不使用硒来使我想做的过度机械化?这无关紧要,这两个工具都可以工作吗? 我不是问哪个更好,我问哪个是工作的正确工具.也许我不了解每个工具目的背后的前提. 解决方案 这些是完全不同的工具,它们在网络剪接,Web自动化,自动数据提取范围中有些"交叉". mechanize是一种成熟且广泛使用的工具,用于编程Web浏览,并具有许多内置功能,例如Cookie Handing,浏览器历史记录,表单.这里要理解的关键是 mechanize.Browser不是真正的浏览器,它无法执行和理解JavaScript,它不能发送异步请求以形成
2 2023-03-24
编程技术问答社区
Python, mechanize, 设置多个头文件的正确语法?
我似乎找不到任何操作,我试图用Python的机械化模块设置多个标题,例如: br.addheaders = [('user-agent', ' Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3')] br.addheaders = [('accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')] ,但看来它只采用了最后一个br.Addheaders ..因此,它仅显示"接受"标题,而不是"用户代理"标头,这使我相信每个呼吁" Br.Addheaders'"覆盖以前的任何电话..我无法认为语法包括2个或更多标题,因此我非常感谢任何帮助. 我正在使用此网站测试标头输出: viewer.html 解决方案 根据/do
2 2023-03-24
编程技术问答社区
使用PowerShell在Internet Explorer的com界面上执行javascript。
我正在使用PowerShell编写一些Internet Explorer自动化脚本.这是我启动IE com对象的方式: $ie = New-Object -com "InternetExplorer.Application" $ie.Navigate("about:blank") $ie.visible = $true $doc = $ie.Document 所以,我想做的是在$doc对象上执行一些JavaScript.例如,我在页面上有一个具有执行submitCommand('lookup')的事件的项目,因此我想直接在$doc上运行,而不必在页面上找到对象,然后调用Click()方法. ,由于对象没有名称和ID,因此更容易更改,因为我只能依靠其在页面上的位置(例如:页面上的第11个跨度项目). 另外,您将如何根据其类选择元素?这将有很大的帮助,因为"按钮"有自己的类. 谢谢 解决方案 $spans=@($ie.document.getElemen
8 2023-03-20
编程技术问答社区
来自C++的网络自动化
我们需要从C ++应用程序(登录应用程序,执行一些操作,注销)进行一些相当复杂的Web自动化,但是性能确实很重要,因此我们正在研究选项. 是否有一种方法可以直接从C ++驱动WebKit或其他无头>引擎,而无需在之间使用更多层(例如Selenium+WebDriver+WebDriver+网络通信+...)?也许? 如果选项1是不可能的,那么从C ++? 运行WebDriver(使用Real Browser)的最佳方法是什么 解决方案 您应该研究 phantomjs (一个无头的WebKit浏览器),它带有 ghostdriver ,这是phantomjs的WebDriver协议实现. 您仍然需要使用最坏的情况,您始终可以在Python中创建WebDriver脚本,并从C ++应用程序调用Python脚本. 其他解决方案 您可以使用 selenium server and jsonwireprotocol .在C ++中,您可以将Curl请求实现到
22 2023-02-23
编程技术问答社区
Selenium Chrome WebDriver如何实现水平滚动
Chrome Web驱动程序的限制仅加载正在查看的网页内容.我的网站有很长的水平表.我有XPATH,可以提取表的列标题,该列的伸展比屏幕宽度还要多.在Chrome Dev Tool Console中,如果我运行XPath $ X(myxpathgoeshere),我将获得所有标题,包括未查看的标题(可以让您滚动查看全部).所以我知道我的xpath是正确的.但是在代码中,当我使用Selenium WebDriver访问它时,它仅给出当前视图中的标头名称.我遇到了Chrome Webdriver Google Group页面上的各种帖子,用户提到了此限制,并且答案是不解决它.因此,无论如何,现在我正在尝试使用JavaScript使其正常工作以水平滚动,然后再次通过XPath进行Findelement,以查看右边的元素是否已加载.但是由于某种奇怪的原因,我似乎无法水平滚动.我正在使用c#javascript executor. IJavaScriptExecutor js = (IJav
0 2023-02-17
编程技术问答社区
如何获得一个网页中的特定框架并检索其内容
我想访问以下URL 的翻译结果 http://translate.google.com/translate?hl = en&sl = en&tl = ar&tl = ar&u=http%3A%3A%2F%2f%2f%2FWWW.SALTYCRANE.CORM %2fhow-escape-eccape-encent-encode-url-python%2F 翻译显示在两个帧的底部内容框架中.我有兴趣仅检索底部内容框架以获取翻译 python的硒允许我们通过Web自动化获取页面内容: browser.get('http://translate.google.com/#en/ar/'+hurl) 所需的框架是一个iframe:
8 2023-01-31
编程技术问答社区
在剧作家中无法捕获响应.
我正在尝试使用剧作家捕获JSON响应.我一直在悬而未决.但是,在无头的情况下:错误模式,我可以看到在浏览器上收到并填充数据.我刚刚开始与剧作家一起玩,并且对"承诺"也不熟悉. 我尝试过的如下: (async () => { let browser = await firefox.launch({headless: true, userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0'}); let page = await browser.newPage(); page.waitForResponse(async(response) => { if (response.url().includes('/abcd') && response.status() == 200) {
2 2023-01-26
编程技术问答社区