我是Python和Selenium编码的新手,但我想我已经明白了,尝试建立一些示例供我学习,我有两个问题, 首先,由于某种原因,我的代码在输入后停止,由于某种原因,它不会用于yalla()函数,
yallaurl = str(input('Your URL + ' + ""))
browser = webdriver.Chrome()
browser.get(yallaurl)
browser.maximize_window()
yalla()
其他然后这另一个问题是关于browser.find_element_by_xpath
的,所以在我转到html文件并单击“复制xpath”后,我得到的是这样的东西:
/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]
那么代码行如何工作?这是合法的吗?
def yalla():
sleep(2)
count = len(browser.find_elements_by_class_name('flyingCart'))
email = browser.find_element_by_xpath('/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]')
for x in range(2, count):
itemdesc[x] = browser.find_element_by_xpath(
"/html/body/table[2]/tbody/tr/td/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[x]/td[2]/a[1]/text()")
priceper[x] = browser.find_element_by_xpath(
"/html/body/table[2]/tbody/tr/td/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[x]/td[5]/text()")
amount[x] = browser.find_element_by_xpath(
"/html/body/table[2]/tbody/tr/td/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[x]/td[6]")
browser.navigate().to('https://www.greeninvoice.co.il/app/documents/new#type=100')
checklogininvoice()
答案 0 :(得分:0)
是的,您的代码可以正常运行并且合法,但不建议这样做。 如前所述,绝对路径可以正常工作,但是如果只对HTML稍作更改,则绝对路径会损坏
参考:https://selenium-python.readthedocs.io/locating-elements.html
答案 1 :(得分:0)
首先,此代码令人困惑:
yallaurl = str(input('Your URL + ' + ""))
这基本上等同于:
yallaurl = input('Your URL: ')
是的,此代码是正确的:
browser.find_element_by_xpath('/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]')
有关正确用法,请参阅docs。 这是此方法的建议用法:
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]')
此代码将返回您选择的元素的对象。要打印元素本身的HTML,应该可以:
print(element.get_attribute('outerHTML'))
有关页面对象的更多信息,请参阅文档的this页面。
由于您尚未提供“ yalla”功能的代码,因此很难在那里诊断问题。