1
  1. 阅读 URL 列表并输入 ID/密码。
  2. 通过 URL,输入表单具有不同的 xpath。
  3. 读取 url 并检查 xpath 以输入 id/pw,

但发生了错误。
我也想知道优化是什么。

'''

def csv_reader(url_obj):
        reader = csv.DictReader(url_obj, delimiter=',')
        对于阅读器中的行:
            print(line["SN"],line["Title"],line["URL"]),
            URL = 行["URL"]
            站点 = 行 [“标题”]
            浏览器 = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
            browser.get(URL)
            时间.sleep(3)
            # 第一个url输入部分
            如果 browser.find_element_by_xpath("""//*[@id="id"]"""):
                browser.find_element_by_xpath("""//*[@id="id"]""").send_keys("test")
                时间.sleep(3)
            # 秒url输入部分
            elif browser.find_element_by_xpath("""//*[@id="uid"]"""):
                 browser.find_element_by_xpath("""//*[@id="uid"]""").send_keys("test")
                 时间.sleep(3)
            别的 :
                经过

我的结果如下。

回溯(最近一次通话最后):
  文件“C:\source\se.py”,第 63 行,在
    csv_reader(url_obj)
  csv_reader 中的文件“C:\source\se.py”,第 31 行
    如果 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
    返回 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
    引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{"method":"xpath","selector":"//*[@id="id"]"}
  (会话信息:chrome=91.0.4472.124)
4

1 回答 1

0

为什么要对多个 URL 使用 if 和 else,在这种情况下,如果 URL 列表增加,您将不得不编写无限 if 和 else。

您也可以在 csv 文件中为不同的 URL 编写 xpath,我相信所有 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
于 2021-07-07T04:10:20.990 回答