簡體   English   中英

find_elements_by_xpath 僅在某些代碼行上返回空值

[英]find_elements_by_xpath returns empty value only on certain lines of code

這是我的第一個問題,所以如果有什么我應該改變的,請告訴我:)

I am trying to use Selenium Webdriver to obtain a list with all the "Unfollow" buttons in a specific GitHub 'Followers' tab https://github.com/toxtli?page=1&tab=followers , using the following code:

from selenium import webdriver
import time
import sys
from importlib import reload

reload(sys)

driver = webdriver.Firefox()

driver.get("http://github.com/login")
username = driver.find_element_by_id("login_field")
password = driver.find_element_by_id("password")

username.send_keys("my_GH_username")
time.sleep(1)
password.send_keys("my_GH_password")
time.sleep(1)

login_form = driver.find_element_by_xpath("//input[@value='Sign in']")
time.sleep(1)
login_form.click()
time.sleep(1)

prepend = ["toxtli"]
    
for user in prepend:
    for t in range(1, 3):
        string = "https://github.com/{}?tab=followers&page={}".format(user, t)
        driver.get(string)
        time.sleep(1)

        unfollow_button = driver.find_elements_by_xpath('//*[@value="Unfollow"]')
        print(unfollow_button)

        time.sleep(1)

driver.close()

但是,無論我嘗試什么find_elements_by_xpath function 都會返回一個空列表 [],而我希望在這里找到幾個匹配項,例如第 523 行中的匹配項:view-source: https://github.com/toxtli?page=1& =追隨者

我想閱讀的“取消關注”按鈕的 HTML 代碼

請注意,如果我嘗試使用不同的行,function 似乎可以正常工作,例如替換下面的代碼以找到第515 行中的“跨度

unfollow_button = driver.find_elements_by_xpath('//*[@class="d-table-cell v-align-middle lh-condensed"]')

為什么會發生這種情況,我該如何解決? 謝謝!

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

driver_path = './geckodriver' #Firefox Executable path
driver = webdriver.Firefox(executable_path=driver_path)

url = "https://github.com/toxtli?page=1&tab=followers" # tesing only for one url

driver.get(url)
sleep(2)

# It will get all unfollow buttons but we need only the ones which are visable so we can filter it
unfollow_btns = driver.find_elements(By.XPATH, "//form//input[@value='Unfollow' and @type='submit']")

for btn in unfollow_btns:
    if btn.is_displayed(): # Checks if unfollow button is displayed
        # Do somthing
        print("We Found Unfollow Btn")

我嘗試了您的代碼(感謝您添加登錄部分),使用我的用戶名/密碼,我得到了列表中返回的所有元素。 我不會在這里全部打印出來,但我會在下面展示一些被退回的。 唯一的區別是我使用的是 Chrome,而不是 Firefox。

[<selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="b306a8a3-1b31-4ec3-b7b7-e141cdd5497f")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="1e5d4b03-104f-4af0-9068-3e30ba19dee0")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="567e5d03-6d93-4a01-ac74-1fa7c6e9977f")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="028d8212-80cb-4833-aa38-18b9fcb60ab4")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="89205c40-9f5f-4d97-89da-621633b14276")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="23431ba1-f5ed-41cc-8f1e-e7912e98864a")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="6cf602d9-3f28-4593-aac6-83a8cce5edb4")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="fccbd345-8090-456a-9604-7af8dc853f9d")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="4afec6fe-0193-4b39-b710-c4080380247b")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="0e8f6379-ce1f-4369-9303-f24e1a570ba3")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="81705790-8358-4dbe-a12c-7b56c3938d7a")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="0fe277cb-d52f-48de-9b31-f9a41d4edc78")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="906f27b3-a6a7-4833-9647-b978bb956091")>, <selenium.webdriver.remote.webelement.WebElement (session="d10763477be39488bf3ed4c4aaae278a", element="303ce9a1-d143-4f9b-b328-1fbd188435e8")>, <selenium.webdriver.remote.webelement.WebElement...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM