Yazılım | Programlama Python Bir Siteden Butonu Xpath' lediğimde bulunamıyor

29 Eki 2018
77
1
Merhabalar



Bir siteden butonun xpath yerini kopyaladıktan sonra hata alıyorum ve yapnak istedıgım sıteye gırdıkten sonra 5 sanıye gibi bir zaman gecsın ve xpath ını aldıgım butona bassın istiyorum ama bu hatayı alıyorum yardım edersenız sevınırım :)



yazdıgım kodlar:::

import time
from selenium import webdriver


browser = webdriver.Firefox()
browser.get('https://tr.link/qmN2')



iptal = browser.find_element_by_xpath('/html/body/div[4]/div[7]/button')

time.sleep(3)
iptal.click()




Aldığım sorun ise şu




Traceback (most recent call last):
File "/root/Masaüstü/trlink.py", line 10, in <module>
iptal = browser.find_element_by_xpath('/html/body/div[4]/div[7]/button')
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/webdriver.py", line 399, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/webdriver.py", line 1014, in find_element
'value': value})['value']
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/webdriver.py", line 318, in execute
self.error_handler.check_response(response)
File "/usr/lib/python3/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: /html/body/div[4]/div[7]/button


 

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,053
390
Ankara
araştırmama gore hata alanlar var boyle boyle bi buton olmaması imkansız hadi diyelim yok nasıl yapıcam

Üstad... O button daha sonradan ekleniyor DOM'a.. Başta yok gerçekten.. (EDİT: Olsaydı bile sayfanın yüklenmesini beklemiyorsun ki... Yarım sayfada arama yapar o zaman) sayfaya sağ tıkla, kaynağı görüntüle de, ki bu sayfanın ilk halini içerir, o düğmeyi bulamayacaksın.

WebDriverWait diye bir fonksiyon vardı sanırım, C#'takinin aynısı python'da da olmalı, onunla istediğin düğme gelene kadar bekletebilirsin. Dur deneyelim...

Kod:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

browser = webdriver.<hangisiniİstersen>()
browser.get("<adres>")
try:
    eleman = WebDriverWait(browser, 10).until(expected_conditions.presence_of_element_located((By.XPATH, '<senin xpath>')))
    print "Bak bulduk elemanı"
except TimeoutException:
    print "10 saniyede bile yüklemedi sorun var"

Üstad şu anda kullandığım cihazda python'la alakalı hiç bir halt yüklü değil, online filan test etmeye de üşeneceğim.. Komutları google'layıp yazdım doğru olmalı ama sen kendin bir test et...
 
Son düzenleme:
29 Eki 2018
77
1
Üstad... O button daha sonradan ekleniyor DOM'a.. Başta yok gerçekten.. (EDİT: Olsaydı bile sayfanın yüklenmesini beklemiyorsun ki... Yarım sayfada arama yapar o zaman) sayfaya sağ tıkla, kaynağı görüntüle de, ki bu sayfanın ilk halini içerir, o düğmeyi bulamayacaksın.

WebDriverWait diye bir fonksiyon vardı sanırım, C#'takinin aynısı python'da da olmalı, onunla istediğin düğme gelene kadar bekletebilirsin. Dur deneyelim...

Kod:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

browser = webdriver.<hangisiniİstersen>()
browser.get("<adres>")
try:
    eleman = WebDriverWait(browser, 10).until(expected_conditions.presence_of_element_located((By.XPATH, '<senin xpath>')))
    print "Bak bulduk elemanı"
except TimeoutException:
    print "10 saniyede bile yüklemedi sorun var"
Üstad şu anda kullandığım cihazda python'la alakalı hiç bir halt yüklü değil, online filan test etmeye de üşeneceğim.. Komutları google'layıp yazdım doğru olmalı ama sen kendin bir test et...




şimdide hata kotu çıkmıyor ancak Butona basmıyor
 

leaks

Katılımcı Üye
29 Eki 2018
864
1
tr.link'te butona basıldığında `form_submit' adlı fonksiyon çalışıyor. Yani, şu şekilde direk sayfaya gidilebilir:
Kod:
[color=#4e4e4e][b]var[/b][/color] t [color=#4e4e4e]= $([/color][color=#bf0303]"#go-link"[/color][color=#4e4e4e]);[/color]
[color=#4e4e4e]$.[/color][color=#0101ff]ajax[/color] [color=#4e4e4e]({[/color]dataType[color=#4e4e4e]:[/color] [color=#bf0303]"json"[/color][color=#4e4e4e],[/color] type[color=#4e4e4e]:[/color] [color=#bf0303]"POST"[/color][color=#4e4e4e],[/color]
	 url[color=#4e4e4e]:[/color] t[color=#4e4e4e].[/color][color=#0101ff]attr[/color] [color=#4e4e4e]([/color][color=#bf0303]"action"[/color][color=#4e4e4e]),[/color] data[color=#4e4e4e]:[/color] t[color=#4e4e4e].[/color][color=#0101ff]serialize[/color] [color=#4e4e4e](),[/color]
	 [color=#0101ff]success[/color][color=#4e4e4e]:[/color] [color=#4e4e4e][b]function[/b][/color] [color=#4e4e4e]([/color]msg[color=#4e4e4e])[/color]
	 [color=#4e4e4e]{[/color]
	     window[color=#4e4e4e].[/color][color=#0101ff]open[/color] [color=#4e4e4e]([/color]msg[color=#4e4e4e].[/color]url[color=#4e4e4e]);[/color]
	 [color=#4e4e4e]}});[/color]
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.