'Suspected' 使用 Python 的 Selenium 输出的奇怪行为
'Suspected' Odd behavior from output of Selenium using Python
美好的一天,我在 运行 以下代码段中发现以下行为,我不确定它是否正确:
for url in links:
driver.get(url)
date = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[1]/div[1]/div[2]/div/span""")
secref1 = driver.find_elements_by_xpath("""/html/body/div[3]/div/section/div[2]/div/section/div/section/div/article/div[1]/div[3]/div[2]/div""")
secref2 = driver.find_elements_by_xpath("""/html/body/div[3]/div/section/div[2]/div/section/div/section/div/article/div[1]/div[4]/div[2]/div""")
if not secref2:
secref2.append("Null")
else:
secref2 = secref2
num_page_items = len(date)
for i in range(num_page_items):
print secref2
driver.close()
我希望网页中缺少 "secref2",因此 IF/ELSE。
当运行脚本时我的输出如下:
DevTools listening on ws://127.0.0.1:64592/devtools/browser/da7ab0e6-e0e9-4edb-963a-913b38c6f4dd
['Null']
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.14518628426304736-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.6063690703515521-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.16122194044687665-7")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.7547639796767653-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.768240568661338-16")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.3077014556092601-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.9689075758046188-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.09545508090332766-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.068763767350847-4")>]
我看到第一个 "Null" 但是后续条目看起来是某种输出。
如果我尝试:
for i in range(num_page_items):
print secref2[i].text
我收到以下错误:
DevTools listening on ws://127.0.0.1:64788/devtools/browser/df696310-30cf-4833-89fa-fac28e6b3bb0
Traceback (most recent call last):
File "test.py", line 54, in <module>
print secref2[i].text
AttributeError: 'str' object has no attribute 'text'
如有任何帮助,我们将不胜感激。
您正在迭代两次。所以在第一个 URL 中,你得到 Null。在随后的 URL 中,您将获得网络元素列表。你不能打印 secref2[i].text
因为你第一次打它是 "Null" 而 "Null" 是一个 str
.
您的意思是要为此处的变量分配其他内容吗?我不知道你为什么要将变量分配给它自己。
else:
secref2 = secref2
美好的一天,我在 运行 以下代码段中发现以下行为,我不确定它是否正确:
for url in links:
driver.get(url)
date = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[1]/div[1]/div[2]/div/span""")
secref1 = driver.find_elements_by_xpath("""/html/body/div[3]/div/section/div[2]/div/section/div/section/div/article/div[1]/div[3]/div[2]/div""")
secref2 = driver.find_elements_by_xpath("""/html/body/div[3]/div/section/div[2]/div/section/div/section/div/article/div[1]/div[4]/div[2]/div""")
if not secref2:
secref2.append("Null")
else:
secref2 = secref2
num_page_items = len(date)
for i in range(num_page_items):
print secref2
driver.close()
我希望网页中缺少 "secref2",因此 IF/ELSE。
当运行脚本时我的输出如下:
DevTools listening on ws://127.0.0.1:64592/devtools/browser/da7ab0e6-e0e9-4edb-963a-913b38c6f4dd
['Null']
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.14518628426304736-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.6063690703515521-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.16122194044687665-7")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.7547639796767653-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.768240568661338-16")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.3077014556092601-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.9689075758046188-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.09545508090332766-4")>]
[<selenium.webdriver.remote.webelement.WebElement (session="a7bc63bef087357d1510c3b28ec8db87", element="0.068763767350847-4")>]
我看到第一个 "Null" 但是后续条目看起来是某种输出。
如果我尝试:
for i in range(num_page_items):
print secref2[i].text
我收到以下错误:
DevTools listening on ws://127.0.0.1:64788/devtools/browser/df696310-30cf-4833-89fa-fac28e6b3bb0
Traceback (most recent call last):
File "test.py", line 54, in <module>
print secref2[i].text
AttributeError: 'str' object has no attribute 'text'
如有任何帮助,我们将不胜感激。
您正在迭代两次。所以在第一个 URL 中,你得到 Null。在随后的 URL 中,您将获得网络元素列表。你不能打印 secref2[i].text
因为你第一次打它是 "Null" 而 "Null" 是一个 str
.
您的意思是要为此处的变量分配其他内容吗?我不知道你为什么要将变量分配给它自己。
else:
secref2 = secref2