如何使用 selenium python 登录到多个网站 url
how to login into to a multiple website url using selenium python
- 阅读 URL 列表并输入 ID/Password。
- 由于URL,输入表单有不同的xpath。
- 阅读 url 并检查 xpath 以输入 id/pw,
但是出现了错误。
我也想知道优化是什么
'''
def csv_reader(url_obj):
reader = csv.DictReader(url_obj, 分隔符=',')
对于 reader 中的行:
打印(行["SN"],行["Title"],行["URL"]),
URL = 行["URL"]
网站=行["Title"]
浏览器 = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
browser.get(URL)
time.sleep(3)
# 首先 url 输入部分
如果 browser.find_element_by_xpath("""//*[@id="id"]"""):
browser.find_element_by_xpath("""//*[@id="id"]""").send_keys("test")
time.sleep(3)
#秒url输入部分
elif browser.find_element_by_xpath("""//*[@id="uid"]"""):
browser.find_element_by_xpath("""//*[@id="uid"]""").send_keys("test")
time.sleep(3)
别的 :
经过
我的结果如下
追溯(最近一次通话):
文件 "C:\source\se.py",第 63 行,位于
csv_reader(url_obj)
文件 "C:\source\se.py",第 31 行,在 csv_reader 中
如果 browser.find_element_by_xpath("""//*[@id="id"]"""):
文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py",第 394 行,在 find_element_by_xpath 中
return self.find_element(by=By.XPATH, value=xpath)
文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py",第 976 行,在 find_element 中
return self.execute(Command.FIND_ELEMENT, {
文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py",第 321 行,正在执行
self.error_handler.check_response(回应)
文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py",第 242 行,在 check_response 中
提高 exception_class(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"xpath","selector":"//*[@id="id"] “}
(会话信息:chrome=91.0.4472.124)
为什么要对多个 URL 使用 if 和 else,在这种情况下,如果 URL 列表增加,您将不得不编写无限的 if 和 else。
对于不同的 URL,您也可以将 xpath 写入 csv 文件,我相信它对于所有 URL 都会不同:
示例代码:
def csv_reader(url_obj):
reader = csv.DictReader(url_obj, delimiter=',')
for line in reader:
print(line["SN"], line["Title"], line["URL"]),
URL = line["URL"]
site = line["Title"]
xpath = line["Xpath"]
browser = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
browser.get(URL)
time.sleep(3)
# First url input part
if len(browser.find_elements_by_xpath(f"{xpath}") > 0 :
browser.find_element_by_xpath(f"{xpath}").send_keys("test")
time.sleep(3)
else:
pass
- 阅读 URL 列表并输入 ID/Password。
- 由于URL,输入表单有不同的xpath。
- 阅读 url 并检查 xpath 以输入 id/pw,
但是出现了错误。
我也想知道优化是什么
''' def csv_reader(url_obj): reader = csv.DictReader(url_obj, 分隔符=',') 对于 reader 中的行: 打印(行["SN"],行["Title"],行["URL"]), URL = 行["URL"] 网站=行["Title"] 浏览器 = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options) browser.get(URL) time.sleep(3) # 首先 url 输入部分 如果 browser.find_element_by_xpath("""//*[@id="id"]"""): browser.find_element_by_xpath("""//*[@id="id"]""").send_keys("test") time.sleep(3) #秒url输入部分 elif browser.find_element_by_xpath("""//*[@id="uid"]"""): browser.find_element_by_xpath("""//*[@id="uid"]""").send_keys("test") time.sleep(3) 别的 : 经过
我的结果如下
追溯(最近一次通话): 文件 "C:\source\se.py",第 63 行,位于 csv_reader(url_obj) 文件 "C:\source\se.py",第 31 行,在 csv_reader 中 如果 browser.find_element_by_xpath("""//*[@id="id"]"""): 文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py",第 394 行,在 find_element_by_xpath 中 return self.find_element(by=By.XPATH, value=xpath) 文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py",第 976 行,在 find_element 中 return self.execute(Command.FIND_ELEMENT, { 文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py",第 321 行,正在执行 self.error_handler.check_response(回应) 文件 "C:\Users\m4gic\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py",第 242 行,在 check_response 中 提高 exception_class(消息、屏幕、堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"xpath","selector":"//*[@id="id"] “} (会话信息:chrome=91.0.4472.124)
为什么要对多个 URL 使用 if 和 else,在这种情况下,如果 URL 列表增加,您将不得不编写无限的 if 和 else。
对于不同的 URL,您也可以将 xpath 写入 csv 文件,我相信它对于所有 URL 都会不同:
示例代码:
def csv_reader(url_obj):
reader = csv.DictReader(url_obj, delimiter=',')
for line in reader:
print(line["SN"], line["Title"], line["URL"]),
URL = line["URL"]
site = line["Title"]
xpath = line["Xpath"]
browser = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
browser.get(URL)
time.sleep(3)
# First url input part
if len(browser.find_elements_by_xpath(f"{xpath}") > 0 :
browser.find_element_by_xpath(f"{xpath}").send_keys("test")
time.sleep(3)
else:
pass