使硒点击特定元素

时间:2020-03-26 14:12:59

标签: html selenium xpath selenium-chromedriver

我想打开此页面https://www.tesla.com/en_gb/models/design#battery,然后使用python以编程方式单击性能按钮。

from selenium import webdriver
import time
browser = webdriver.Chrome('../Downloads/chromedriver.exe')
browser.get('https://www.tesla.com/en_gb/models/design#battery')
A = browser.find_element_by_xpath("//div[@class='group--options_block_title']/span/p")
time.sleep(30)
A.click();

我认为问题可能是页面没有时间加载,但是给它30秒没有帮助。

如果有效,则范围应为367,而不是379

2 个答案:

答案 0 :(得分:0)

请有时参考以下代码,有时网站加载时间太长,因此如果您在解决方案中使用WebDriverWait,那将是很好的选择。使用Abs XPath也不是一个好习惯。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")

driver.get('https://www.tesla.com/en_gb/models/design#battery')
wait = WebDriverWait(driver,30)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//p[contains(text(),'Performance')]")))
print element.text
element.click()
element1 = wait.until(EC.presence_of_element_located((By.XPATH, "//span[contains(text(),'367')]")))
print element1.text

答案 1 :(得分:0)

您的选择器找到2个元素,其中第一个不是性能。 试试这个:

//div[@role='button' and @aria-label='Performance']

因此,似乎您实际上在单击,但是其中一个元素已经处于活动状态。