GVKun编程网logo

Pythonselenium浏览器driver.back()(pythonselenium浏览器参数设置)

5

想了解Pythonselenium浏览器driver.back的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于的相关问题,此外,我们还将为您介绍关于Click()函数在python/Sele

想了解Pythonselenium浏览器driver.back的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于的相关问题,此外,我们还将为您介绍关于Click()函数在python / Selenium中不起作用、java+selenium, python+selenium浏览界面,滑动页面、jenkins 构建selenium python (浏览器驱动是chromedriver)的解决方法、mac 搭建 python+selenium+chromedriver 环境的新知识。

本文目录一览:

Pythonselenium浏览器driver.back()(pythonselenium浏览器参数设置)

Pythonselenium浏览器driver.back()(pythonselenium浏览器参数设置)

我创建了一个小的屏幕抓取器,并且一切似乎都运行良好,信息被提取并保存在数据库中。我唯一遇到的问题是有时Python不使用,driver.back()因此它尝试在错误的页面上获取信息并崩溃。我尝试添加一个,time.sleep(5)但有时仍然无法正常工作。我正在尝试对其进行优化,以尽可能减少时间。因此,使其hibernate30秒似乎不是一个好的解决方案。

答案1

小编典典

这是最好的解决方案。不能保证back()和forward()方法有效。

 driver.execute_script("window.history.go(-1)")

传入的JavaScript访问Dom页面以导航到上一个URL。我希望这可以解决您的问题。

Click()函数在python / Selenium中不起作用

Click()函数在python / Selenium中不起作用

请参阅我对您发布的问题的评论。最后,我确实找到了您的按钮,但是如果不使用JavaScript,就无法点击它:

from selenium import webdriver

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
try:
    driver.implicitly_wait(6) # wait up to 6 seconds to find an element
    driver.get("https://www.nike.com/ch/fr/launch?s=upcoming")
    
    loginBtns = driver.find_elements_by_xpath("/html/body/div[2]/div/div/div[1]/div/header/div[1]/section/div/ul/li[1]/button")
    if loginBtns:
        #loginBtns[0].click()
        driver.execute_script('arguments[0].click()',loginBtns[0])
    else:
        print('Could not find login button.')
finally:
    driver.quit()

java+selenium, python+selenium浏览界面,滑动页面

java+selenium, python+selenium浏览界面,滑动页面

用到selenium的时候,有时需要滑动屏幕,模拟浏览,这时候就可以用到下边的代码了:

首先是java的selenium滑屏代码(不知道为啥后边就乱了排版,自己调整下就好~)

private static Random random = new Random();
private void pretendScrolling(JavascriptExecutor js, int sum) throws InterruptedException {
sum--;
int step;
int length;
switch (sum) {
case 0:
step = random.nextInt(30) + 1 + 50;
length = random.nextInt(3000) + 1 + 3000;
smoothlyScrolling(js, 0, step, length, true);
smoothlyScrolling(js, 0, step, length, false);

smoothlyScrolling(js, 0, step, length, true);
smoothlyScrolling(js, length, step, 8000, true);

step = random.nextInt(20) + 1 + 80;
smoothlyScrolling(js, 0, step, 8000, false);

length = random.nextInt(2000) + 1 + 3000;
smoothlyScrolling(js, 0, step, length, true);
smoothlyScrolling(js, 0, 20, length, false);
break;
case 1:
step = random.nextInt(10) + 1 + 40;
smoothlyScrolling(js, 0, step, 6000, true);
Thread.sleep(3000);
smoothlyScrolling(js, 0, step, 6000, false);

length = random.nextInt(1500) + 1 + 1000;
step = random.nextInt(10) + 1 + 40;
Thread.sleep(3000);
smoothlyScrolling(js, 0, step, length, true);
Thread.sleep(5000);
step = random.nextInt(10) + 1 + 40;
smoothlyScrolling(js, length, step, 7000, true);
Thread.sleep(3000);

step = random.nextInt(20) + 1 + 80;
smoothlyScrolling(js, 0, step, 8000, false);
Thread.sleep(3000);
break;
case 2:
step = random.nextInt(10) + 1 + 30;
length = random.nextInt(1300) + 1 + 1000;
smoothlyScrolling(js, 0, step, length, true); Thread.sleep(8000); step = random.nextInt(10) + 1 + 20; smoothlyScrolling(js, length, step, 6000, true); Thread.sleep(3000); length = random.nextInt(1500) + 1 + 1500; step = random.nextInt(20) + 1 + 40; smoothlyScrolling(js, length, step, 6000, false); Thread.sleep(3000); step = random.nextInt(30) + 1 + 70;
smoothlyScrolling(js, length, step, 6000, true);
Thread.sleep(4000);
step = random.nextInt(20) + 1 + 30;
smoothlyScrolling(js, 0, step, 6000, false);
Thread.sleep(3000);
break;
case 3:
step = random.nextInt(10) + 1 + 30;
smoothlyScrolling(js, 0, step, 7000, true);
Thread.sleep(3000);
step = random.nextInt(30) + 1 + 20;
smoothlyScrolling(js, 0, step, 7000, false);
Thread.sleep(3000);
break;
case 4:
step = random.nextInt(10) + 1 + 50;
smoothlyScrolling(js, 0, step, 7000, true);
Thread.sleep(3000);
length = random.nextInt(1500) + 1 + 2000;
step = random.nextInt(25) + 1 + 20;
smoothlyScrolling(js, length, step, 7000, false);
Thread.sleep(3000);
step = random.nextInt(20) + 1 + 30;
smoothlyScrolling(js, length, step, 7000, true);
Thread.sleep(3000);
step = random.nextInt(20) + 1 + 40;
smoothlyScrolling(js, 0, step, 7000, false);
Thread.sleep(2000);
break;
case 5:
step = random.nextInt(20) + 1 + 30;
smoothlyScrolling(js, 0, step, 2500, true);
Thread.sleep(3000);
step = random.nextInt(30) + 1 + 40;
smoothlyScrolling(js, 0, step, 2500, false);
Thread.sleep(3000);
step = random.nextInt(20) + 1 + 30;
smoothlyScrolling(js, 0, step, 7000, true);
Thread.sleep(6000);
step = random.nextInt(20) + 1 + 30;
smoothlyScrolling(js, 0, step, 7000, false);
Thread.sleep(2000);
break;
default:
case 6:
step = random.nextInt(30) + 1 + 30;
length = random.nextInt(1500) + 1 + 2500;
smoothlyScrolling(js, 0, step, length, true);
step = random.nextInt(30) + 1 + 70;
smoothlyScrolling(js, 0, step, length, false);
step = random.nextInt(20) + 1 + 40;
smoothlyScrolling(js, 0, step, 7000, true);
step = random.nextInt(25) + 1 + 20;
smoothlyScrolling(js, 0, step, 7000, false);
Thread.sleep(3000);
step = random.nextInt(25) + 1 + 20;
length = random.nextInt(1500) + 1 + 3000;
smoothlyScrolling(js, 0, step, length, true);
Thread.sleep(3000);
step = random.nextInt(15) + 1 + 30;
smoothlyScrolling(js, 0, step, length, false);
break;
}
}
private void smoothlyScrolling(JavascriptExecutor js, int floor, int step, int celling, boolean direction) {
if (direction) {
for (int i = floor; i <= celling; i += step) {
js.executeScript("scrollTo(0," + i + ")");
}
} else {
for (int i = celling; i >= floor; i -= step) {
js.executeScript("scrollTo(0," + i + ")");
}
}
}

用法如下:



两个参数,其中js表示的是driver, sum是一个随机数,表示随机的从7中浏览方式之间选一种


再然后是在python selenium中的应用,我专门写了一个类出来存放浏览界面的代码,然后在需要用到它的地方导入,引用
import random
import time


class PretendScrolling:
@staticmethod
def pretend_scrolling(driver, sum):
step = 1
length = 1
if sum == 1:
step = random.randint(0, 30) + 1 + 50
length = random.randint(0, 3000) + 1 + 3000
smoothlyScrolling(driver, 0, step, length, True)
smoothlyScrolling(driver, 0, step, length, False)

smoothlyScrolling(driver, 0, step, length, True)
smoothlyScrolling(driver, length, step, 8000, False)
step = random.randint(0, 20)+ 1+80
smoothlyScrolling(driver, 0 ,step, 8000, False)

length = random.randint(0, 2000) + 1 + 3000
smoothlyScrolling(driver, 0 , step, length, True)
smoothlyScrolling(driver, 0 , 20, length, False)
elif sum == 2:
step = random.randint(0, 10) + 1 + 40
smoothlyScrolling(driver, 0, step, 6000, True)
time.sleep(3)
smoothlyScrolling(driver, 0, step, 6000, False)

length = random.randint(0, 1500) + 1 + 1000
step = random.randint(0, 10) + 1 + 40
time.sleep(3)
smoothlyScrolling(driver, 0, step, length, True)
time.sleep(5)
step = random.randint(0, 10)+1+40
smoothlyScrolling(driver, length, step, 7000, True)
time.sleep(3)

step = random.randint(0, 20)+1+80
smoothlyScrolling(driver, 0, step, 8000, False)
time.sleep(3)
elif sum == 3:
step = random.randint(0, 10) + 1 + 30
length = random.randint(0, 1300) + 1 + 1000
smoothlyScrolling(driver, 0, step, length, True)
time.sleep(8)
step = random.randint(0, 10) + 1 + 20
smoothlyScrolling(driver, length, step, 6000, True)
time.sleep(3)
length = random.randint(0, 1500) + 1 + 1500
step = random.randint(0, 20) + 1 + 40
smoothlyScrolling(driver, length, step, 6000, False)
time.sleep(3)
step = random.randint(0, 30) + 1 + 70
smoothlyScrolling(driver, length, step, 6000, True)
time.sleep(4)
step = random.randint(0, 20) + 1 + 30
smoothlyScrolling(driver, 0, step, 6000, False)
time.sleep(3)
elif sum == 4:
step = random.randint(0, 10) + 1 + 30
smoothlyScrolling(driver, 0, step, 7000, True)
time.sleep(3)
step = random.randint(0, 30) + 1 + 20
smoothlyScrolling(driver, 0, step, 7000, False)
time.sleep(3)
elif sum == 5:
step = random.randint(0, 10) + 1 + 50
smoothlyScrolling(driver, 0, step, 7000, True)
time.sleep(3)
length = random.randint(0, 1500) + 1 + 2000
step = random.randint(0, 25) + 1 + 20
smoothlyScrolling(driver, length, step, 7000, False)
time.sleep(3)
step = random.randint(0, 20) + 1 + 30
smoothlyScrolling(driver, length, step, 7000, True) time.sleep(3) step = random.randint(0, 20) + 1 + 40 smoothlyScrolling(driver, 0, step, 7000, False) time.sleep(2) elif sum == 6: step = random.randint(0, 20) + 1 + 30 smoothlyScrolling(driver, 0, step, 2500, True) time.sleep(3)
step = random.randint(0, 30) + 1 + 40
smoothlyScrolling(driver, 0, step, 2500, False)
time.sleep(3)
step = random.randint(0, 20) + 1 + 30
smoothlyScrolling(driver, 0, step, 7000, True)
time.sleep(6)
step = random.randint(0, 20) + 1 + 30
smoothlyScrolling(driver, 0, step, 7000, False)
time.sleep(2)
elif sum == 7:
step = random.randint(0, 30) + 1 + 30
length = random.randint(0, 1500) + 1 + 2500
smoothlyScrolling(driver, 0, step, length, True)
step = random.randint(0, 30) + 1 + 70
smoothlyScrolling(driver, 0, step, length, False)
step = random.randint(0, 20) + 1 + 40
smoothlyScrolling(driver, 0, step, 7000, True)
step = random.randint(0, 25) + 1 + 20
smoothlyScrolling(driver, 0, step, 7000, False)
time.sleep(3)
step = random.randint(0, 25) + 1 + 20
length = random.randint(0, 1500) + 1 + 3000
smoothlyScrolling(driver, 0, step, length, True)
time.sleep(3)
step = random.randint(0, 15) + 1 + 30
smoothlyScrolling(driver, 0, step, length, False)
else:
pass



#(不知道为啥会乱排版,这是另一个方法)def smoothlyScrolling(driver, floor, step, celling, direction):
if direction is True:
i = floor
while i <= celling:
i += step
jscript = "window.scrollTo(1, {height_i})".format(height_i=i)
driver.execute_script(jscript)
else:
i = celling
while i >= floor:
i -= step
jscript = "window.scrollTo(1, {height_i})".format(height_i=i)
driver.execute_script(jscript)



 







在python的其它类中引用如下:
首先先在相关类中引入滚动界面的类

 

然后调用:
以上就是selenium里边滑动界面的一组方法了,支持java和python.
 





因为图片好像没有加载出来,所以再放一下.然后也不知道为啥排版会乱,要用的话自己调整一下即可.

 



 

 


  

 

 

jenkins 构建selenium python (浏览器驱动是chromedriver)的解决方法

jenkins 构建selenium python (浏览器驱动是chromedriver)的解决方法

1.在chrome浏览去中输入chrome://version  查看chrome 的安装位置

 

 

2.将chromedriver 驱动添加到可执行文件路径中

 

3.在Jenkins中 的系统设置中-环境变量-添加python环境 和windows 一样  

 

4. 修改脚本添加驱动的绝对路径 

 

 

5.再次构建Jenkins  结果ok

 

6.脚本执行无界面的解决方法

原因:Jenkins搭建完成后,默认运行自动化案例的节点都是master,master即启动jenkins的这台服务器,而在master上运行案例,通常都是运行后台进程,所以有同学就会疑惑为啥用jenkins跑脚本看不到运行界面。如果想看到运行界面的话,需要添加一个slave节点,特别是有多台机器需要接入jenkins来执行案例时,更需要添加节点

1.在系统管理-管理节点。可以看到当前只有一个master

   

 

2、点击右侧新建节点,填写信息如下,保存。  【说明】远程工作目录为本地的jenkins-workpace;

2.1 如果启动方式没有java web 步骤如下

1:打开"系统管理"——"Configure Global Security"

2:TCP port JNLP agents 配置成"随机",点击"Agent protocols",打勾开启"Java Web Start Agent Protocol3"

3:检查Plugin Manager中"Enable Slave"需要打勾

:

   

点击"Agent protocols"安全策略,开启"Java Web Start Agent Protocol3"

检查"Plugin Manager"中"Enable Slave"需要打勾

保存即可,保存后的选项如下:

 

 

3、此时可以看到新增的robot节点,但是状态显示为红色的X,表示该节点还是off line

  

4、点击节点robot,详情界面显示了几种启动节点的方式。

  步骤一、点击Launch按钮会下载一个slave-agent.jnlp 文件。

    步骤二、下载slave.jar 下载Jar包,并放在指定的目录。

    步骤三、Copy界面的指令,打开cmd窗口,输入指令。

     步骤四,刷新当前页面即可,注意下载的agent.jar及cmd下的命令格式java -jar 找到下载的agent.jar  在跟上报错节点下的提示命令

 

  

 

5、查看Jenkins界面,查看发现代理构建在线。

  

6、配置项目限制项目的运行节点为新建节点名称。

  

 

mac 搭建 python+selenium+chromedriver 环境

mac 搭建 python+selenium+chromedriver 环境

本人创建了一个 go 语言专题,但要在搜集许多 go 语言文章,手工操作很重复,所以就考虑到 selenium 工具的方便性,做一个自动化的,这样就大大提高效率

以下安装中出现的问题,如果自己没有遇到则可以跳过,不同电脑环境会有所不一样

1. 安装 brew 工具

如果 mac 电脑已经安装则直接跳过

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

下来开始安装 brew install python3,提示 brew update,那按照提示安装运行 brew update 命令,又遇到以下问题:

Error: Running Homebrew as root is extremely dangerous and no longer supported.

解决办法:

sudo chown -R $(whoami) /usr/local

但又出现以下问题

chown: /usr/local: Operation not permitted

解决办法,重新安装 homebrew:

# 卸载
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
# 安装
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

备注:安装时间会比较长,如果出现失败,重启以下电脑重新安装

注:以上就是我安装 brew 的完整步骤

2. 安装 python3+selenium

brew install python3
pip3 install selenium

3. 下载 chromedriver

chromedriver 下载地址:http://chromedriver.storage.googleapis.com/index.html

根据自己 chrome 浏览器的版本下载对应的, 我的环境如下:


从下载列表中我没有找到我对应的 70.0.3538.102 版本,我选择 70.0.3538.97 版本下载

4. 安装 chromedriver

解压上个步骤下载的安装包,出现一个 chromedriver 文件,下来进行下面步骤:

sudo cp -R chromedriver /usr/local/bin/

然后关闭谷歌浏览器

5. 测试

编写下面文件 test.py

from selenium import webdriver

browser = webdriver.Chrome()

browser.get("http://www.baidu.com")
print(browser.page_source)
browser.close()

运行:

python3 test.py

如果自动打开 www.baidu.com 网页,并自动关闭,则说明安装成功


原创作者:simple
转发说明:转发时注明原文作者和链接
发布时间:2018 年 11 月 18 日

今天关于Pythonselenium浏览器driver.back的分享就到这里,希望大家有所收获,若想了解更多关于Click()函数在python / Selenium中不起作用、java+selenium, python+selenium浏览界面,滑动页面、jenkins 构建selenium python (浏览器驱动是chromedriver)的解决方法、mac 搭建 python+selenium+chromedriver 环境等相关知识,可以在本站进行查询。

本文标签: