从文本中读取并为chrome创建随机配置文件不起作用

时间:2017-12-03 08:48:16

标签: python python-3.x selenium selenium-webdriver notepad

为什么在打印随机镀铬配置文件时才启动相同的镀铬配置文件?

我有一个文本文件:

'--profile-directory=Person 1
'--profile-directory=Person 2

它会读取随机行并将其加载到Chrome中。为什么不起作用?

我已经包含了示例1,这是我遇到的问题:

示例1:

import random
import random
lines = open('C:\\Users\\Hoxton\\Pictures\\1\\ad.txt').read().splitlines()
myline =random.choice(lines)
print(myline)


Profiles = []

for x in (myline):
    indexes = [index for index in range(len(myline))]
    shuffle(indexes)
    dataDir = "--user-data-dir=C:\\Users\\Hoxton\\AppData\\Local\Google\\Chrome\\User Data"
    chrome_options1 = webdriver.ChromeOptions()
    chrome_options1.add_argument(dataDir)
    chrome_options1.add_argument(x)
    driver = webdriver.Chrome(chrome_options=chrome_options1)
    driver.get('https://www.google.com')

应该注意以下内容完美无缺 例2

foo = ['--profile-directory=Person 1', '--profile-directory=Person 2', '--profile-directory=Person 3', '--profile-directory=Person 4', '--profile-directory=Person 5']
from random import randrange
random_index = randrange(0,len(foo))
print(foo[random_index])

Profiles = []

for x in [foo[random_index]]:
    indexes = [index for index in range(len(foo[random_index]))]
    shuffle(indexes)
    dataDir = "--user-data-dir=C:\\Users\\Hoxton\\AppData\\Local\Google\\Chrome\\User Data"
    chrome_options1 = webdriver.ChromeOptions()
    chrome_options1.add_argument(dataDir)
    chrome_options1.add_argument(x)
    driver = webdriver.Chrome(chrome_options=chrome_options1)
    driver.get('https://www.google.com')

有人可以帮助我从记事本中读取示例吗?我无法在第一个例子中看到我在做什么。

1 个答案:

答案 0 :(得分:0)

在示例1中。您正在迭代字符串。在示例2中,您将遍历列表。

试试这个可能证明问题的例子:

import random
lines = ['--profile-directory=Person 1', '--profile-directory=Person 2', '--profile-directory=Person 3', '--profile-directory=Person 4', '--profile-directory=Person 5']
# This returns a string.
myline = random.choice(lines)

# iterate over a string (x = string char).
for x in (myline):
    print(x)

# iterate over a tuple (x = tuple item).
for x in (myline,):
    print(x)

上面使用字符串和元组,尽管元组与示例2中使用的列表类似,使用[]foo[random_index]括起来成为列表[foo[random_index]]

编辑:

根据评论的要求,我可能没有实际测试的环境。

import random
from selenium import webdriver

with open('C:\\Users\\Hoxton\\Pictures\\1\\ad.txt') as r:
    lines = r.readlines()

myline = random.choice(lines).strip()
# Add string to a list.
if type(myline) is str:
    myline = [myline]
# Display myline
print(repr(myline))

Profiles = [] # obsolete?
dataDir = "--user-data-dir=C:\\Users\\Hoxton\\AppData\\Local\Google\\Chrome\\User Data"

for x in myline:
    indexes = [index for index in range(len(myline))]
    random.shuffle(indexes)
    chrome_options1 = webdriver.ChromeOptions()
    chrome_options1.add_argument(dataDir)
    chrome_options1.add_argument(x)
    driver = webdriver.Chrome(chrome_options=chrome_options1)
    driver.get('https://www.google.com')

编辑:如果由于某种原因从随机字符串更改为序列序列类型,则为myline添加类型str check。