排行榜

  • 用户榜
  • 标签榜
  • 冲榜分奖金

频道

最新最热悬赏待采纳 筛选
  • 0

    回答

  • 12

    浏览

如下图,每次打开计算器都有一个提示“在这里设置予以播报”,导致页面其他所有元素无法定位,而且右上角的三个点点也定位不到,如何让这个文字消失

  • 3

    回答

  • 21

    浏览

我使用的是Python的appium,利用self.driver.find_element_by_android_uiautomator(Uiobject)此方法找尋UI元素。 假設下圖中的元素resourceId為title,且text為Abc,我能用new UiSelector().text("Abc").fromParent(new UiSelector().resourceId("android:id/summary")) 找到同級元素。 可如果元素需要透過轉軸才能找到,例如這樣:new UiScrollable(new UiSelector()).scrollIntoView(text("Abc")),加上fromParent就找不到同級元素了:new UiScrollable(new UiSelector()).scrollIntoView(text("Abc")).fromParent(new UiSelector().resourceId("android:id/summary")),試過很多方式都找不到,求幫助

  • 6

    回答

  • 29

    浏览

C:\Users\Administrator\PycharmProjects\pythonProject1\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/pythonProject1/venv/54556.pyTraceback (most recent call last): File "C:\Users\Administrator\PycharmProjects\pythonProject1\venv\lib\site-packages\selenium\webdriver\common\service.py", line 72, in start self.process = subprocess.Popen(cmd, env=self.env, File "D:\Python39\lib\subprocess.py", line 825, in __init__ errread, errwrite) = self._get_handles(stdin, stdout, stderr) File "D:\Python39\lib\subprocess.py", line 1275, in _get_handles c2pwrite = msvcrt.get_osfhandle(self._get_devnull()) File "D:\Python39\lib\subprocess.py", line 1058, in _get_devnull self._devnull = os.open(os.devnull, os.O_RDWR)FileNotFoundError: [Errno 2] No such file or directory: 'nul'During handling of the above exception, another exception occurred:Traceback (most recent call last): File "C:\Users\Administrator\PycharmProjects\pythonProject1\venv\54556.py", line 4, in <module> wd = webdriver.Chrome(r'D:\Python39\chromedriver.exe') File "C:\Users\Administrator\PycharmProjects\pythonProject1\venv\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__ self.service.start() File "C:\Users\Administrator\PycharmProjects\pythonProject1\venv\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start raise WebDriverException(selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home进程已结束,退出代码1   换版本,换地址,用火狐浏览器,配置环境变量都不行

  • 3

    回答

  • 25

    浏览

本人萌新小白,学了python3个月了,就自己尝试写了个ui实现一些功能,具体想实现的就是自己爬取一些数据,存入EXL,然后再提取抓到的数据进行分析和展示,所以UI就选了pyqt5(主要买来得书只教了qt5),源代码如下 class Thread(threading.Thread): """线程类""" def __init__(self): threading.Thread.__init__(self) def run(self, *args, **kwargs): url = webdriver.Chrome() url.get(r'http://www.baidu.com') time.sleep(20) tips = '成功' url.quit() return tips class MainWindow(QMainWindow): """主界面类""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('测试') self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.display = QTextEdit(self.centralWidget) font = QFont() font.setPointSize(10) self.display.setFont(font) self.display.setGeometry(QRect(400, 500, 500, 800)) self.testbutton = QPushButton(self.centralWidget) self.testbutton.setText('测试按钮') font = QFont() font.setPointSize(15) self.testbutton.setGeometry(QRect(100, 100, 300, 100)) self.testbutton.setFont(font) self.showMaximized() self.thread = Thread() self.testbutton.clicked.connect(self.run_thread) def run_thread(self): self.display.clear() self.thread.start() self.display.setText(self.thread.run()) if __name__ == '__main__': app = QApplication(sys.argv) main = MainWindow() main.show() app.exit(app.exec_())   现在的问题就是点击测试按钮,会出现两个selenium爬取界面,我想知道是为啥。还有主界面无法点击,有的时候会显示未响应,我这不是给开了个子线程么,为啥还会卡。我自己想是不是因为display界面显示的run函数导致他开两个网页,如果是,那我要爬取的某些数据是要返回一些值得,比如说数据是否更新,更新了就存EXL,未更新return一个未更新的字符串,如果因为setText里面的显示不能写run的返回值,难道我要加一个空字符串接收返回值吗?真心求教各位老师能给指点一二o(╥﹏╥)o

  • 6

    回答

  • 55

    浏览

使用python selemiun只能定位到hearder内的标签,定位不到红框内的div 里的body。 应该怎么操作呀?

  • 1

    回答

  • 18

    浏览

appium启动app后会闪退,跪求带哥帮忙看看啥问题 原帖子在这https://testerhome.com/topics/29720

回答 DickHead1
采纳率0%
13天前
  • 4

    回答

  • 18

    浏览

我正在编写一个 Scrapy 对接 Selenium 的下载中间件: # Spider.py import scrapy class TestSpider(scrapy.Spider): name = 'test' # allowed_domains = ['xxx.com'] start_urls = ['http://httpbin.org/'] def parse(self, response): print(response) # Middlewares.py from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException from fake_useragent import UserAgent from scrapy.http import HtmlResponse class SeleniumMiddleware: """对接Selenium""" def __init__(self): self.browser = webdriver.Chrome() self.browser.maximize_window() self.wait = WebDriverWait(self.browser, 10) @classmethod def from_crawler(cls, crawler): return cls() def process_request(self, request, spider): try: # 判断哪些链接需要使用selenium程序访问 if request.url in spider.start_urls: self.browser.get(request.url) # 等待数据加载 self.wait.until(EC.presence_of_element_located(( By.ID, 'operations-tag-HTTP_Methods'))) page_text = self.browser.page_source # 获取包含动态加载的数据 # 返回Response对象 return HtmlResponse(url=request.url, body=page_text, encoding='utf-8',request=request, status=200) except TimeoutException: # 超时 return HtmlResponse(url=request.url, status=500, request=request) def __del__(self): print('游览器对象关闭~') self.browser.quit() 当我测试程序时,我发现当返回了响应对象,程序没有执行 del 的操作,导致打开的游览器无法如预期那样关闭。 运行结果如下: 当我将返回响应对象的代码注释的时候,程序是会执行 del 操作的。 # 返回Response对象 # return HtmlResponse(url=request.url, body=page_text, encoding='utf-8', request=request, status=200) 运行结果: 我想知道是什么原因造成这样的结果,在返回响应对象的情况下我该如何进行收尾操作(关闭游览器)? 希望您能帮帮我,感谢。

  • 2

    回答

  • 18

    浏览

跪求哪位大佬有selenium自动化测试实战项目

  • 0

    回答

  • 15

    浏览

问题说明: 公司系统使用.net开发的,现在想做自动化测试,我看了自动化测试工具QTP不能满足需求,我设想能用python代码编写的,后续能够持续集成,能向slenium一样的测试工具

  • 0

    回答

  • 16

    浏览

selenium 用谷歌浏览器自动化测试,到了这一步就进行不下去了 switch_to.alert 都是报找不到该方法,使用模拟按键和鼠标都不行

  • 3

    回答

  • 21

    浏览

  ERROR: Could not find a version that satisfies the requirement unittest (from versions: none) ERROR: No matching distribution found for unittest WARNING: You are using pip version 19.2.3, however version 21.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.

  • 5

    回答

  • 33

    浏览

如图所示,想要定位“医院”这个元素,但是试了很多种办法都是报错! 这个是我写的定位方法//*[@class="currentMenu"]/li/div[2]/span 求大神指点,已经想尽各种办法了!!

  • 3

    回答

  • 54

    浏览

一、问题说明 我用python selenium 执行 js 代码,需要用 js 执行的返回值 在 selenium 其他地方使用。 (我这里是想把 js 获取的 视频时长 传给 selenium 用以 time.sleep(视频时长) 延迟后(即播放完视频)自动播放下一个) 因此我的思路是:通过 局部变量 把 js函数内部的值 赋予全局变量, 然后 return 全局变量。 现在问题是所需要的值在函数内部获取到了,但是传不出来,即 return 出来的是 None。 二、尝试的方法 在 函数内部 var ,return 就找不到; 在 函数外定义 var, return 的就是函数外的, 通过 window 也没起作用。 三、错误代码、软件版本(python3, Chrome)   四、相关代码 js_play_end = ''' var video = document.getElementById("video_html5_api"); var _duration = 3.14; var i = setInterval(function(){ if(video.readyState > 0){ console.log("111"); console.log("视频时长: "+Math.floor(video.duration/60)+"分钟"+Math.ceil(video.duration%60)+"秒"); console.log("222"); console.log(video.duration); clearInterval(i); } window._duration = video.duration; console.log(window._duration); return window._duration; }, 200); return _duration; video.addEventListener("ended", function () { console.log("本章播放结束,开始下一章"); var par_iframe = window.parent; var par_par_iframe = par_iframe.parent; var _div_2 = par_par_iframe.document.getElementById("right2"); var _div_1 = par_par_iframe.document.getElementById("right1"); _div_2.click(); _div_1.click(); }, false); ''' # js_play_end = 'return document.getElementsByClassName("vjs-duration-display");' _duration = browser.execute_script(js_play_end) print(_duration) time.sleep(300) # time.sleep(float(video_duration)+5)

  • 3

    回答

  • 27

    浏览

启动程序 按下开始 开始爬虫 0 Exception in Tkinter callback Traceback (most recent call last):   File "D:\Python\lib\tkinter\__init__.py", line 1702, in __call__     return self.func(*args)   File "E:/智联爬虫可视化/crawl_views.py", line 79, in usr_selection     Scrapy_start = Scrapy_start_1.run_1()   File "E:\智联爬虫可视化\crawl_ZL.py", line 61, in run_1     return self.get_data(self.r.text)  #调用函数,函数是爬去数据,上面的所有都是用来请求的,这个函数才是解析请求返回来的数据的   File "E:\智联爬虫可视化\crawl_ZL.py", line 79, in get_data     js = json.loads(text)   File "D:\Python\lib\json\__init__.py", line 348, in loads     return _default_decoder.decode(s)   File "D:\Python\lib\json\decoder.py", line 337, in decode     obj, end = self.raw_decode(s, idx=_w(s, 0).end())   File "D:\Python\lib\json\decoder.py", line 355, in raw_decode     raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)       附: #requests库来获取网页的请求信息 #bs4主要用来解析HTML标签,转换成一个树形结构      lxml、utf-8 #JSON模块,对数据进行编解码   json.dumps()、json.loads() #Tkinter库构造图形界面 #pandas库读取xlsx文件 #matplolib库数据分析,生成散点图

  • 0

    回答

  • 8

    浏览

在部署appium环境时,在终端执行:./Scripts/bootstrap.sh命令出现一下错误。哪位大神帮忙看下啥问题  

  • 0

    回答

  • 10

    浏览

编程小白,对讲分机出厂IP默认都是192.168.68.90,需要登陆进去修改参数。 import os from selenium import webdriver import time def test(): driver = webdriver.Chrome("chromedriver.exe") # chromedriver所在路径 driver.get(r"http://192.168.68.90") 这样会打开对话框 接下来要如何才能登陆进去呢?网上搜了一下处理alert, prompt对话框的方法,是不行的。

回答 真彩彩笔
采纳率100%
25天前
  • 0

    回答

  • 13

    浏览

1.机器环境: CentOS release 6.8 (Final) geckodriver-v0.24.0-linux64.tar.gz java version "1.8.0_73" firefox --version  Mozilla Firefox 45.0.1 2.java配置: <dependency>     <groupId>org.seleniumhq.selenium</groupId>     <artifactId>selenium-java</artifactId>     <version>3.6.0</version> </dependency> System.setProperty("webdriver.gecko.driver", "/usr/bin/geckodriver");   3.异常: Driver info: driver.version: FirefoxDriver         at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:125)         at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:271)         at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:119)         at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:216)         at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:211)         at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:207)         at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)         at test.GetTest.get_test(GetTest.java:57)         at com.example.controller.SendController.sendTest(SendController.java:148)         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)         at java.lang.reflect.Method.invoke(Method.java:497)         at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65)         at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)         at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)         at java.util.concurrent.FutureTask.run(FutureTask.java:266)         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)         at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)         at java.lang.Thread.run(Thread.java:745) Caused by: org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output: Error: no display specified

  • 2

    回答

  • 21

    浏览

import unittest class MyTest1(unittest.TestCase): def test1(self): print('test - 1') def test2(self): print('test - 2') class MyTest2(unittest.TestCase): def test3(self): print('test - 3') def test4(self): print('test - 4') if __name__ == '__main__': # unittest.main() # 实例化测试套件 suite = unittest.TestSuite() # 实例化加载器 loader = unittest.TestLoader() # 实例化运行器 runner = unittest.TextTestRunner() # 1- 通过测试类进行加载 suite.addTest(loader.loadTestsFromTestCase(MyTest1)) # 通过运行器运行测试套件 runner.run(suite) 为什么加载了MyTest1,执行结果却是MyTest1和MyTest2都跑了,哪里写的不对吗

  • 3

    回答

  • 48

    浏览

一段网页网页代码如下: <img src="/images/info/tubiao/cx01.gif" align="absmiddle" border="0" style="cursor:pointer;" onclick="getChartdata(30,0,1)"> 用Python selenium 模拟点击此元素,代码如下 btn = browserdriver.find_element_by_xpath('//img') browserdriver.execute_script('$arguments[0].click()',btn) 但执行后没有任何反应,也没有错误提示,这是为什么?大佬们这个问题要怎么解决?

  • 0

    回答

  • 15

    浏览

初学爬虫,自己做练习。万分感谢大佬们解答。 先通过https://stockx.com/sneakers/中的源码获取该页面四十个款式的详情页,再对详情页进行请求。代码为测试阶段,暂时先选取第一个款式的链接进行测试。该链接为https://stockx.com/adidas-yeezy-boost-350-v2-core-black-red-2017。 问题: (1)start_url里的链接是https://stockx.com/sneakers/,在parse函数中选取第一个款式的链接,通过yield回调到parse_detail函数。程序运行时,chromedriver直接就打开详情页链接而不是start里的链接(因为每次打开有一个地区语言的选择,暂时还不会scrapy的cookie导入),所以后面代码里只好在详情页的中加了一行地区选择语言确认按钮点击的代码。求大佬解答。 (2)在请求详情界面时,为获取详情页面中的货号,颜色,发售价等信息时,(代码中仅测试货号)使用response.xpath 和response.css都获取不到文本信息。求大佬解答。 以爬取网页中的货号为例 代码如下 stock.py import scrapy from selenium import webdriver from selenium.webdriver.chrome.options import Options class StockxSpider(scrapy.Spider): name = 'stockx' # allowed_domains = ['www.xxx.com'] start_urls = ['https://stockx.com/sneakers/'] urls = []#详情页链接 labels = []#款式 #浏览器初始化 def __init__(self): self.option = Options() self.option.add_experimental_option('excludeSwitches', ['enable-automation']) self.bro = webdriver.Chrome(executable_path='./chromedriver.exe', options=self.option) script = 'Object.defineProperty(navigator,"webdriver",{get:()=>undefined,});' self.bro.execute_script(script) #获取款式的详情页链接以及款式名 def parse(self, response): div_list = response.xpath('//div[@class="browse-grid loading undefined"]/div[2]/div') for div in div_list: url = div.xpath('./div/a/@href').extract_first() label = url[1:] url = 'https://stockx.com/' + label self.urls.append(url) self.labels.append(label) for url in self.urls: break yield scrapy.Request(url = url, callback = self.parse_detail) #爬取货号 def parse_detail(self, response): style = response.xpath('//div[@class="product-info"]/div/div[1]/span/text()').extract_first() style1 = response.css('.product-info > div > div:nth-of-type(1) > span ::text').extract_first() print(style) print(style1) middlewares.py的主要代码部分 def process_response(self, request, response, spider): bro = spider.bro if request.url in spider.start_urls:#请求链接在初始链接池中 bro.get(request.url) sleep(2) bro.find_element_by_css_selector('.css-8c8ied').click() page_text = bro.page_source new_response = HtmlResponse(url=request.url, body=page_text, encoding='utf-8', request=request) return new_response elif request.url in spider.urls: #请求链接为详情页 bro.get(request.url) sleep(2) bro.find_element_by_css_selector('.css-8c8ied').click()#由于chrome直接打开详情页,就在这也加上了语言地区的确认按钮 page_text = bro.page_source new_response = HtmlResponse(url=request.url, body=page_text, encoding='utf-8', request=request) return new_response else: return response 程序运行结果 用response.xpath和css爬取货号得到的都是空值,xpath和css的路径应该没有写错,求大佬解答,万分感谢。 通过打印response.text 检索发现没有product-info的类,通过打印response.xpath('//div[@class="product-info"]/div/div[1]/span/text()')偶尔可以爬取到三个selector列表,第二个中有data=货号的数据,但是再代码后面加上extract_first(),输出结果仍为空。