gpt4 book ai didi

python - 无法找到具有类名的元素,无法使用 xpath 找到元素 - Selenium、Python、 `ERR_SSL_VERSION_OR_CIPHER_MISMATCH`

转载 作者:行者123 更新时间:2023-11-28 22:38:47 37 4
gpt4 key购买 nike

我需要从一个因包含成人内容而无法引用的网页中收集信息。在此页面上进行下一步操作之前,首先,我需要单击年龄确认按钮。现在,我只对获取它的来源感兴趣。但是,最简单的可能解决方案不起作用。我试图在页面加载后找到年龄按钮,但我收到了这条消息:

C:\Documents and Settings\katie>python test.py
Message: {"errorMessage":"Unable to find element with class name '.enter_pl'","r
equest":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Co
nnection":"close","Content-Length":"98","Content-Type":"application/json;charset
=UTF-8","Host":"127.0.0.1:1559","User-Agent":"Python-urllib/2.7"},"httpVersion":
"1.1","method":"POST","post":"{\"using\": \"class name\", \"sessionId\": \"8ef74
610-d21e-11e5-a0c9-ede1ada579b6\", \"value\": \".enter_pl\"}","url":"/element","
urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/ele
ment","relative":"/element","port":"","host":"","password":"","user":"","userInf
o":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["
element"]},"urlOriginal":"/session/8ef74610-d21e-11e5-a0c9-ede1ada579b6/element"
}}
Screenshot: available via screen

代码如下:

#!/bin/env/python
# -*- coding: cp1250 -*-
from datetime import datetime
import time
import sys, os
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver

reload(sys)
sys.setdefaultencoding("cp1250")

main_page_url = "" # actual URL removed due to referencing adult content

def get_browser():
return webdriver.PhantomJS("phantomjs.exe")

try :
browser = get_browser()
wait = WebDriverWait(browser, 30)
browser.get(main_page_url)
close = browser.find_element_by_class_name('.enter_pl')
close.click()
html = browser.page_source
browser.close()
print html
except Exception, e:
print e

我还尝试使用 xpath 定位元素,如下所示:

#!/bin/env/python
# -*- coding: cp1250 -*-
from datetime import datetime
import time
import sys, os
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver

reload(sys)
sys.setdefaultencoding("cp1250")

main_page_url = "" # actual URL removed due to referencing adult content

def get_browser():
return webdriver.PhantomJS("phantomjs.exe")

try :
browser = get_browser()
wait = WebDriverWait(browser, 30)
browser.get(main_page_url)

button_age_accept = browser.find_element_by_xpath("/html/body/div[1]/div[2]/div[1]/div[1]/div[2]/button")
button_age_accept.click()

html = browser.page_source
browser.close()
print html
except Exception, e:
print e

但我也收到了这条消息......

C:\Documents and Settings\katie>python test2.py

Message: {"errorMessage":"Unable to find element with xpath '/html/body/div[1]/d
iv[2]/div[1]/div[1]/div[2]/button'","request":{"headers":{"Accept":"application/
json","Accept-Encoding":"identity","Connection":"close","Content-Length":"136","
Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:1655","User-Age
nt":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"using\":
\"xpath\", \"sessionId\": \"63c74110-d21f-11e5-b1f9-dbb94da03942\", \"value\":
\"/html/body/div[1]/div[2]/div[1]/div[1]/div[2]/button\"}","url":"/element","url
Parsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/elemen
t","relative":"/element","port":"","host":"","password":"","user":"","userInfo":
"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["ele
ment"]},"urlOriginal":"/session/63c74110-d21f-11e5-b1f9-dbb94da03942/element"}}
Screenshot: available via screen

这是该网页的 html:http://pastie.org/private/koxyw655innytv9skcijog

-------------------------------------------- ---------------------------------------------- ------------------------------------编辑:我尝试使用 Chrome---------------------------------------------- ---------------------------------------------- ------------------------------

我尝试使用 chrome 而不是 PhantomJS 来做精确的事情,但是,chrome 向我显示 ERR_SSL_VERSION_OR_CIPHER_MISMATCH:

#!/bin/env/python
# -*- coding: cp1250 -*-
from datetime import datetime
import time
from selenium.webdriver.common.by import By
import sys, os
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

reload(sys)
sys.setdefaultencoding("cp1250")

main_page_url = "" # actual URL removed due to referencing adult content

def get_browser():
return webdriver.PhantomJS(executable_path=r'./phantomjs.exe', service_args=['--ignore-ssl-errors=true', '–ssl-protocol=any'])

def get_chrome():
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_argument('--ignore-certificate-errors')
return webdriver.Chrome(chrome_options=options)

try :

browser = get_chrome()
wait = WebDriverWait(browser, 100)
browser.maximize_window()
browser.get(main_page_url)

browser.maximize_window()
wait = WebDriverWait(browser, 20)
wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id='confirmage']/div[2]/button")))
elemnt = browser.find_element_by_xpath(".//*[@id='confirmage']/div[2]/button")
elemnt.click();

html = browser.page_source
browser.close()
print html

with open('result.txt', 'w') as file_:
file_.write(html)

except Exception, e:
print e
with open('result.txt', 'w') as file_:
file_.write("ERROR")

最佳答案

当您使用 find_element_by_class_name() 时,您不应在类名前加上点:

driver.find_element_by_class_name("enter_pl")

如果您使用 CSS 选择器,则需要点:

driver.find_element_by_css_selector(".enter_pl")

您可能还需要 wait for this element to be visible 然后才点击:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
age = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".enter_pl")))
age.click()

此外,检查元素是否在 iframe 内。如果是,您需要在搜索元素之前切换到框架的上下文:

driver.switch_to.frame("frame_name_or_id")
driver.find_element_by_class_name("enter_pl").click()

关于python - 无法找到具有类名的元素,无法使用 xpath 找到元素 - Selenium、Python、 `ERR_SSL_VERSION_OR_CIPHER_MISMATCH`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380166/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com