私はPythonを初めて使いましたが、これを行う方法について過去1時間を探しています。私は、折りたたみ(ドロップダウン)メニューですべてのカテゴリを開き、Ctrl + Tを今アクティブなクラス内のすべてのリンクを開く必要があります。ブラウザが開き、すべてのカテゴリも開いていますが、アクティブなリンクが新しいタブで開かれることはありません。助けていただければ幸いです。Selenium in Python - ドロップダウンメニュー内のすべてのリンクを開く
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("pioneerdoctor.com/productpage.cfm")
cat = driver.find_elements_by_css_selector("a[href*='Product_home']")
for i in cat:
i.click()
child = driver.find_elements_by_css_selector("li.active > a[href*='ProductPage']")
for m in child:
m.send_keys(Keys.CONTROL + 't')
EDIT:
は、ここで私は、テキストファイルへの書き込み、ウェブブラウザを使用して起こってしまった現在の回避策です。私が見ている唯一の問題は、それが結果の重複を何度も書いていることです。後でコメントを見て、より良い方法で作業できるかどうかを見ていきます(これは確かです)。
from selenium import webdriver
import webbrowser
print("Opening Google Chrome..")
driver = webdriver.Chrome()
driver.get("http://pioneerdoctor.com/productpage.cfm")
driver.implicitly_wait(.5)
driver.maximize_window()
cat = driver.find_elements_by_css_selector("a[href*='Product_home']")
print("Writing URLS to file..")
for i in cat:
i.click()
child = driver.find_elements_by_css_selector("a[href*='ProductPage']")
for i in child:
child = i.get_attribute("href")
file = open("Output.txt", "a")
file.write(str(child) + '\n')
file.close()
driver.quit
file = open("Output.txt", "r")
Loop = input("Loop Number, Enter 0 to quit: ")
Loop = int(Loop)
x = 0
if Loop == 0:
print("Quitting..")
else:
for z in file:
if x == Loop:
break
print("Done.\n")
else:
webbrowser.open_new_tab(z)
x += 1
実際のURLは何ですか? – testerjoe2
http://www.pioneerdoctor.com/productpage.cfm – TroyHP
テストをいただきありがとうございます - 私は何かをする前にウィンドウを最大化して切り取った要素エラーを見つけることができませんでした。それに応じてコードを編集します。私はおそらく、txtファイルに "子"リストを書き、ドライバを終了して、新しいタブのwebbrowser.openのループを介してそれらの行を読むことについて考えていました。これが最善の方法であるかどうかは不明です。 - そうはない。リストがアクティブになり、その子孫の2番目のリンクにアクセスしようとしているので、明確にするために( "li.active> a [href * = 'ProductPage']")入力します。 – TroyHP