亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法使用 Selenium WebDriver 和 Python 訪問特定網站上的文本框和按鈕

無法使用 Selenium WebDriver 和 Python 訪問特定網站上的文本框和按鈕

皈依舞 2021-12-08 10:29:21
我正在邁出硒的第一步,現在正面臨一個奇怪的問題。我想在網站上導航并在搜索框中輸入文本,然后單擊“輸入”按鈕進入下一頁??偟膩碚f,我知道如何做到這一點,并且它可以在其他網站上無縫運行,但是這個網站似乎以某種方式引起了麻煩。當我按名稱搜索文本框和按鈕時,它只是找不到它們。同樣的問題,如果我嘗試通過 xPath 或 ID 訪問它們...網站是:http : //www.dsv.de/schwimmen/wettkampf-national/schwimmerabfrage/(德國游泳協會數據庫)到目前為止,我的代碼如下所示:from selenium import webdriverfrom selenium.webdriver.common.keys import Keysurl = "http://www.dsv.de/schwimmen/wettkampf-national/schwimmerabfrage/"driver = webdriver.Chrome()driver.get(url)submit_button = driver.find_element_by_name("_submitButton")fistname_textbox = driver.find_element_by_xpath('//*[@id="_firstnameTextBox"]')lastname_textbox = driver.find_element_by_xpath('//*[@id="_lastnameTextBox"]')regid_textbox = driver.find_element_by_id("_regidTextBox")fistname_textbox.send_Keys("String 1")lastname_textbox.send_keys("String 2")submit_button.click()driver.close()如果你們中的任何人能幫助我并找出導致此問題的原因,我將不勝感激:) 我現在越來越困惑
查看完整描述

3 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

該文本框和按鈕元素內的<iframe>,所以你必須:


Induce WebDriverWait等待所需的框架可用并切換到它。

Induce WebDriverWait使所需元素可點擊。

您可以使用以下解決方案:


代碼塊:


from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


options = webdriver.ChromeOptions()

options.add_argument('start-maximized')

options.add_argument('disable-infobars')

options.add_argument('--disable-extensions')

driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')

driver.get("http://www.dsv.de/schwimmen/wettkampf-national/schwimmerabfrage/")

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@src='https://dsvdaten.dsv.de/Modules/Results/Individual.aspx?Lang=de-DE']")))

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='TextBox' and @id='_firstnameTextBox']"))).send_keys("juliu_mbr")

driver.find_element_by_xpath("//input[@class='TextBox' and @id='_lastnameTextBox']").send_keys("juliu_mbr")

driver.find_element_by_xpath("//input[@class='Button' and @id='_submitButton']").click()

瀏覽器快照:

http://img1.sycdn.imooc.com//61b018a5000174d313610763.jpg

在這里你可以找到關于Ways to deal with #document under iframe的相關討論


查看完整回答
反對 回復 2021-12-08
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

all部分在<iframe>標簽里面,你需要先切換到它


from selenium.webdriver.support import expected_conditions as ec

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By


wait = WebDriverWait(driver, 5)

wait.until(ec.frame_to_be_available_and_switch_to_it((By.TAG_NAME, 'iframe')))


submit_button = driver.find_element_by_name("_submitButton")

#...


查看完整回答
反對 回復 2021-12-08
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

您需要切換到框架,然后定位元素


url = "http://www.dsv.de/schwimmen/wettkampf-national/schwimmerabfrage/"


driver = webdriver.Chrome()

driver.get(url)

driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@src='https://dsvdaten.dsv.de/Modules/Results/Individual.aspx?Lang=de-DE']'));


// then your code for the Login


submit_button = driver.find_element_by_name("_submitButton")

fistname_textbox = driver.find_element_by_xpath('//*[@id="_firstnameTextBox"]')

lastname_textbox = driver.find_element_by_xpath('//*[@id="_lastnameTextBox"]')

regid_textbox = driver.find_element_by_id("_regidTextBox")


fistname_textbox.send_Keys("String 1")

lastname_textbox.send_keys("String 2")

submit_button.click()


driver.close()


查看完整回答
反對 回復 2021-12-08
  • 3 回答
  • 0 關注
  • 365 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號