如何使用 selenium python 登录到多个网站 url

how to login into to a multiple website url using selenium python

  1. 阅读 URL 列表并输入 ID/Password。
  2. 由于URL,输入表单有不同的xpath。
  3. 阅读 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