我有一个Selenium + Python + Chromedriver脚本,该脚本应登录网站,然后点击下载CSV文件的下载按钮。
检查下载按钮的详细信息是:
<button id="csv-button" class="block tiny-margin-top" data-args="csv">
CSV
</button>
和XPath是:
//*[@id="csv-button"]
但它说我运行脚本时找不到XPath元素。请找到以下代码:
click_button = driver.find_element_by_xpath('//*[@id="csv-button"]')
click_button.click()
答案 0 :(得分:1)
标识 WebElement 的唯一 xpath 如果您看到元素未找到异常,则需要诱导WebDriverWait将expected_conditions
子句设置为element_to_be_clickable
,如下所示:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# other code
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='csv-button']"))).click()
要更精细,您可以使用:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# other code
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='block tiny-margin-top' and @id='csv-button']"))).click()
答案 1 :(得分:0)
问题似乎是你的xpath不太正确。您使用单引号,其中需要双倍,反之亦然。
尝试:
click_button = driver.find_element_by_xpath("//*[@id='csv-button']")
click_button.click()
你甚至可以尝试:
//button[@id='csv-button']
这将使xpath搜索速度更快,因为它只会查看按钮标记。
答案 2 :(得分:0)
单引号应放在双引号中。请看下面
click_button = driver.find_element_by_xpath("//*[@id='csv-button']")
click_button.click()
在此处查看更改:
('//*[@id="csv-button"]') ---> ("//*[@id='csv-button']")